785. 判斷二分圖

題目

(https://leetcode-cn.com/problems/is-graph-bipartite/)
給定一個無向圖graph,當這個圖為二分圖時返回true捞蚂。

如果我們能將一個圖的節(jié)點集合分割成兩個獨立的子集A和B妇押,并使圖中的每一條邊的兩個節(jié)點一個來自A集合,一個來自B集合姓迅,我們就將這個圖稱為二分圖敲霍。

graph將會以鄰接表方式給出,graph[i]表示圖中與節(jié)點i相連的所有節(jié)點丁存。每個節(jié)點都是一個在0到graph.length-1之間的整數(shù)肩杈。這圖中沒有自環(huán)和平行邊: graph[i] 中不存在i,并且graph[i]中沒有重復的值解寝。

示例 1:
輸入: [[1,3], [0,2], [1,3], [0,2]]
輸出: true
解釋:
無向圖如下:
0----1
| |
| |
3----2
我們可以將節(jié)點分成兩組: {0, 2} 和 {1, 3}扩然。

示例 2:
輸入: [[1,2,3], [0,2], [0,1,3], [0,2]]
輸出: false
解釋:
無向圖如下:
0----1
| \ |
| \ |
3----2
我們不能將節(jié)點分割成兩個獨立的子集。
注意:

graph 的長度范圍為 [1, 100]聋伦。
graph[i] 中的元素的范圍為 [0, graph.length - 1]夫偶。
graph[i] 不會包含 i 或者有重復的值。
圖是無向的: 如果j 在 graph[i]里邊, 那么 i 也會在 graph[j]里邊嘉抓。

分析

假設 0: 未上色, 1: 紅色, -1: 黑色

實際上就是一個上色問題, 依次判斷每個節(jié)點(防止非連通圖中有未訪問的節(jié)點),
如果未被上色則選擇一種顏色對其上色并dfs的對其鄰接點上相反的顏色, 如果鄰
接點已有相同的顏色說明上色失敗返回false,

代碼

class Solution {
    public  boolean isBipartite(int[][] graph) {
            int[] colors = new int[graph.length];
            //遍歷節(jié)點
           for(int i = 0; i < graph.length; ++i){
                if(colors[i] == 0 && !coloring(graph, colors, 1, i)){
                    return false;
                }
            }
            return true;
        }

        private  boolean coloring(int[][] graph, int[] colors, int color, int node) {
            // 如果已上色判斷顏色是否一致, 不一致說明上色失敗
           if(colors[node] != 0){
                return colors[node] == color;
            }
            colors[node] = color;
            //對節(jié)點內(nèi)的每一個值進行遍歷索守≡我ぃ看是否上色不一致
            for(int next : graph[node]){
                if(!coloring(graph, colors, -color, next)){
                    return false;
                }
            }
            return true;
        }
}

結(jié)果

image.png
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抑片,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杨赤,更是在濱河造成了極大的恐慌敞斋,老刑警劉巖截汪,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異植捎,居然都是意外死亡衙解,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門焰枢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚓峦,“玉大人,你說我怎么就攤上這事济锄∈钜” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵荐绝,是天一觀的道長一汽。 經(jīng)常有香客問我,道長低滩,這世上最難降的妖魔是什么召夹? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮恕沫,結(jié)果婚禮上监憎,老公的妹妹穿的比我還像新娘。我一直安慰自己婶溯,他們只是感情好枫虏,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著爬虱,像睡著了一般隶债。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跑筝,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天死讹,我揣著相機與錄音,去河邊找鬼曲梗。 笑死赞警,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的虏两。 我是一名探鬼主播愧旦,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼定罢!你這毒婦竟也來了笤虫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎琼蚯,沒想到半個月后酬凳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡遭庶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年宁仔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峦睡。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡翎苫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出榨了,到底是詐尸還是另有隱情拉队,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布阻逮,位于F島的核電站粱快,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叔扼。R本人自食惡果不足惜事哭,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓜富。 院中可真熱鬧鳍咱,春花似錦、人聲如沸与柑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽价捧。三九已至丑念,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間结蟋,已是汗流浹背脯倚。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嵌屎,地道東北人推正。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像宝惰,于是被迫代替她去往敵國和親植榕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容