【Breadth-first Search 】785. Is Graph Bipartite?
生活随笔
收集整理的這篇文章主要介紹了
【Breadth-first Search 】785. Is Graph Bipartite?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
輸入:一個無向圖graph。graph[i] 的值是一些節點,表示從i到這些節點有邊。圖中節點用0到graph.length-1表示。這個圖沒有指向自己的邊,也就是說節點i不會有指向節點i的邊。輸入中不會有重復的邊。
輸出:如果這個圖是bipartite,返回true;否則返回false。
規則:圖bipartite的定義是:圖中所有節點分成A、B兩個集合,并且每一條邊的兩個節點分別屬于兩個集合。
分析:我們可以一邊遍歷邊,一邊將邊的兩個節點分別放入到兩個集合中 setA setB。如果在遍歷某條邊的時候發現兩個節點已經處在同一個集合中了,那就返回false。這到題目的BFS還是DFS是指 邊的遍歷方式。
細節:節點分成兩個集合,可以用兩個Set表示。也可以用一個數組不同的值表示(從934. Shortest Bridge學習到)。
代碼
方法isBipartite 是BFS,兩個Set
方法isBipartiteV2 是BFS,用colors數組既可以表示節點是否訪問過,也可以表示節點的分組。
方法isBipartiteV3是BFS,V2版本的if else 判斷優點low。colors[i]=0 表示一組,colors[i]=1表示另外一組
方法isBipartiteV4是DFS。
總結
以上是生活随笔為你收集整理的【Breadth-first Search 】785. Is Graph Bipartite?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 18.4 aiohttp
- 下一篇: StyleGAN图像风格转换相关经典论文