LeetCode 785. 判断二分图

1、题目

785. 判断二分图

2、题解

这道题目乍看之下并不难,不过写起来还是有点蛋疼。
首先,二分图是指你把点分成两个集合A、B;只有A连B的线,没有A连A,B连B。也就是说相邻节点必须是不同的两个集合。在这个题目中,几个点就是几个第二级的数组,那么通过染色区别的方法,只要相邻的节点颜色相同即为false,否则就是true.

3、代码

class Solution {
    public boolean isBipartite(int[][] graph) {
        int len = graph.length;
        int color[] = new int[len];
      //外面遍历上色,再内部循环上色,再跳到别的数组上色。
        for(int i = 0;i<len;i++){
            if(color[i]==0&&dfs(i,color,2,graph)==false){
                    return false;
            }
          
        }
        return true;
    }
  //这种写法的节点必须是按顺序命名的,即节点必须从0加1递增,不然就不能使用这个方法。
  //例:[[1,3],[0,2],[1,3],[0,2]] TRUE
  //[[1,5],[0,2],[1,5],[0,2]] 数组下标越界
    public boolean dfs(int i,int []color,int t,int [][]graph){
        if(color[i]!=0){
            return color[i]==t;
        }
        color[i] = t;
        for(int j:graph[i]){
            if(dfs(j,color,3-t,graph)==false){
                 return false;
            }
        }
        return true;
    }
}

4、执行结果

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,095评论 0 13
  • 选择题部分 1.()部门负责日常监督检查工作,安全巡视的同时进行消防检查,推动消防安全制度的贯彻落实。 A: 消防...
    skystarwuwei阅读 15,719评论 0 3
  • 选择题部分 1.(),只有在发生短路事故时或者在负荷电流较大时,变流器中才会有足够的二次电流作为继电保护跳闸之用。...
    skystarwuwei阅读 13,691评论 0 7
  • 焦点中级十期 成长分享337天 2019-05-16 第83次约练 这一段时间约练,我感觉自己没有进步,似乎好像还...
    风雨彩虹1219阅读 157评论 0 1
  • 你每天要开多少次门呢?我们每天从卧室去厕所,中间要开关两道门。一切就绪,出门上班的时候要出大门。大门过后还有电梯门...
    青木729阅读 316评论 0 1