323. Number of Connected Components in an Undirected Graph

Medium
Given n nodes labeled from ``0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), write a function to find the number of connected components in an undirected graph.

Example 1:

 0          3
 |          |
 1 --- 2    4

Given n = 5 and edges = [[0, 1], [1, 2], [3, 4]], return 2.

Example 2:

 0           4
 |           |
 1 --- 2 --- 3

Given n = 5 and edges = [[0, 1], [1, 2], [2, 3], [3, 4]], return 1.

Note:
You can assume that no duplicate edges will appear in edges. Since all edges are undirected, [0, 1] is the same as[1, 0] and thus will not appear together in edges.

這道題主要是為了復(fù)習(xí)一下Union Find這個數(shù)據(jù)結(jié)構(gòu),三部分寫好Union Find: int[] father, int find(), void union().

class Solution {
    public int[] father;
    public int countComponents(int n, int[][] edges) {
        if (edges == null || edges.length == 0 || edges[0].length == 0){
            return n;
        } 
        father = new int[n];
        int res = n;
        for (int i = 0; i < n; i++){
            father[i] = i;
        }
        for (int i = 0; i < edges.length; i++){
            int u = edges[i][0];
            int v = edges[i][1];
            if (find(u) != find(v)){
                union(u, v);
                res--;
            }
        }
        return res;
    }
    
    private int find(int a){
        if (father[a] == a){
            return a;
        } 
        return find(father[a]);
    }
    
    private void union(int a, int b){
        int root_a = find(a);
        int root_b = find(b);
        if (root_a != root_b){
            father[root_a] = root_b;
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末只搁,一起剝皮案震驚了整個濱河市鹿响,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖顾稀,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件博肋,死亡現(xiàn)場離奇詭異,居然都是意外死亡赃春,警方通過查閱死者的電腦和手機(jī)愉择,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锥涕,你說我怎么就攤上這事衷戈。” “怎么了层坠?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵殖妇,是天一觀的道長。 經(jīng)常有香客問我破花,道長谦趣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任座每,我火速辦了婚禮前鹅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尺栖。我一直安慰自己嫡纠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布延赌。 她就那樣靜靜地躺著除盏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挫以。 梳的紋絲不亂的頭發(fā)上者蠕,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音掐松,去河邊找鬼踱侣。 笑死,一個胖子當(dāng)著我的面吹牛大磺,可吹牛的內(nèi)容都是我干的抡句。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼杠愧,長吁一口氣:“原來是場噩夢啊……” “哼待榔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起流济,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤锐锣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后绳瘟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雕憔,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年糖声,在試婚紗的時候發(fā)現(xiàn)自己被綠了斤彼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片分瘦。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖畅卓,靈堂內(nèi)的尸體忽然破棺而出擅腰,到底是詐尸還是另有隱情,我是刑警寧澤翁潘,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布趁冈,位于F島的核電站,受9級特大地震影響拜马,放射性物質(zhì)發(fā)生泄漏渗勘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一俩莽、第九天 我趴在偏房一處隱蔽的房頂上張望旺坠。 院中可真熱鬧,春花似錦扮超、人聲如沸取刃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽璧疗。三九已至,卻和暖如春馁龟,著一層夾襖步出監(jiān)牢的瞬間崩侠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工坷檩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留却音,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓矢炼,卻偏偏與公主長得像系瓢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子句灌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

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