美文网首页
LeetCode 785. 判断二分图

LeetCode 785. 判断二分图

作者: 风卷晨沙 | 来源:发表于2019-08-23 12:08 被阅读0次

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

相关文章

网友评论

      本文标题:LeetCode 785. 判断二分图

      本文链接:https://www.haomeiwen.com/subject/ghmzsctx.html