美文网首页程序员
力扣 785 判断二分图

力扣 785 判断二分图

作者: zhaojinhui | 来源:发表于2020-09-13 11:34 被阅读0次

题意:给定一堆graphes,判定他们是否是二分图

思路:遍历每一个二分图的节点,遍历的时候,检查相邻的两个节点不能有相同的颜色,这里用1和-1标示,具体见代码

思想:染色法

复杂度:时间O(n2),空间O(n)

class Solution {
    // key是节点的index,value是节点染色的值
    HashMap<Integer, Integer> map = new HashMap();
    public boolean isBipartite(int[][] graph) {
        // graph会有多个独立的闭环
        for(int i=0;i<graph.length;i++) {
            // 没遍历过当前节点,且当前节点不是Bipartitle
            if(!map.containsKey(i) && !isBi(i, graph))
                return false;
        }
        return true;
    }
    
    // 检查以当前节点开始的graph是否事Bipartitle
    boolean isBi(int index, int[][] graph) {
        Queue<Integer> queue = new LinkedList();
        // 把首节点加入队列
        queue.add(index);
        // 遍历过的节点加入map
        map.put(index, 1);
        while(!queue.isEmpty()) {
            // 从对列中弹出节点
            int cur = queue.poll();
            int sign = map.get(cur);
            // 查看当前节点的邻居节点
            for(int i: graph[cur]) {
                // 邻居节点之前出现过
                if(map.containsKey(i)) {
                    int tsign = map.get(i);
                    // 邻居节点和当前节点染色相同
                    if(tsign == sign)
                        return false;
                } else {
                    // 邻居节点加入队列,并加入map
                    queue.add(i);
                    map.put(i, sign*(-1));
                }
            }
        }
        return true;
    }
}

相关文章

  • 力扣 785 判断二分图

    题意:给定一堆graphes,判定他们是否是二分图 思路:遍历每一个二分图的节点,遍历的时候,检查相邻的两个节点不...

  • 785. 判断二分图

    785. 判断二分图 染色法

  • 二分图基础知识

    前言:总结一下二分图相关的知识点 0X00 基础 判断是不是二分图 785. 判断二分图 DFS 遍历所有节点,遍...

  • LeetCode 785. 判断二分图

    题目 785. 判断二分图 描述 给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节...

  • LeetCode 785. 判断二分图

    1、题目 785. 判断二分图 2、题解 这道题目乍看之下并不难,不过写起来还是有点蛋疼。首先,二分图是指你把点分...

  • 785. 判断二分图

    题目链接[https://leetcode.cn/problems/is-graph-bipartite/] 难度...

  • LeetCode785. 判断二分图

    1、题目链接 https://leetcode-cn.com/problems/is-graph-bipartit...

  • LeetCode785.判断二分图

    给定一个无向图graph,当这个图为二分图时返回true。 如果我们能将一个图的节点集合分割成两个独立的子集A和B...

  • 785. 判断二分图(Python)

    难度:★★★☆☆类型:图方法:深度优先搜索 力扣链接请移步本题传送门[https://leetcode-cn.co...

  • 704.二分查找&27.移除元素

    704.二分查找 题目链接704. 二分查找 - 力扣(LeetCode)[https://leetcode.cn...

网友评论

    本文标题:力扣 785 判断二分图

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