聊聊并查集(一)

并查集

星期五花了一個(gè)小時(shí)敲完了并查集代碼春哨,花了大部分時(shí)間去調(diào)試結(jié)果發(fā)現(xiàn)問(wèn)題源頭出在eclipse重定向中與我自身代碼并無(wú)關(guān)系熄赡,最后只能命令行運(yùn)行了碗暗。

并查集可能這個(gè)名字很多人很陌生,其實(shí)我本身也是今天第一次聽(tīng)到這個(gè)概念挤茄,其中有幾個(gè)專有名詞分別是:觸點(diǎn)山害、連接纠俭、等價(jià)類、連通分量浪慌≡┚#可能這么說(shuō)太抽象了,我拿具體的例子來(lái)舉個(gè)例:

金庸寫的小說(shuō)中肯定有正邪兩派之分权纤,那么其中一個(gè)一個(gè)人物我們稱之為觸點(diǎn)钓简,那么為了不與同道中人發(fā)生打斗乌妒,比如喬峰和段譽(yù)這無(wú)論如何打不起來(lái),因?yàn)樗麄兪前莅炎有值芡獾恕D敲此麄兊陌莅炎有值苓@個(gè)關(guān)系就是連接的意思撤蚊。
那么怎么等價(jià)類怎么理解呢?

  • 自反性:?jiǎn)谭搴蛦谭遄约菏窍噙B的(自己肯定跟自己有關(guān)系损话,為了找出帶頭大哥也是為了自己崇高理想信念)
  • 對(duì)稱性:?jiǎn)谭搴投巫u(yù)有關(guān)系侦啸,那么段譽(yù)與喬峰有關(guān)系。
  • 傳遞性:?jiǎn)谭搴投巫u(yù)有關(guān)系丧枪,段譽(yù)與虛竹也有關(guān)系光涂,那么喬峰與虛竹也有關(guān)系。

最后這三個(gè)人形成的關(guān)系網(wǎng)算是一個(gè)連通分量(當(dāng)然這是直接與喬峰有關(guān)系),比如夢(mèng)姑肯定與虛竹有關(guān)系豪诲,所以夢(mèng)姑不可能跟喬峰為敵顶捷,她也處在這個(gè)關(guān)系網(wǎng)內(nèi)。如果我加上阿紫可能關(guān)系會(huì)亂類似于這種情況先排除屎篱。

那么我們來(lái)扯扯快樂(lè)的單身漢鳩摩智,鳩摩智他就是一個(gè)人葵蒂,他前期與段譽(yù)為敵交播,那么基本算是跟那個(gè)連通分量為敵,喬峰看見(jiàn)不降龍十八掌打死他(竟敢欺負(fù)我兄弟践付,雖然我不屑于跟你糾纏)

按以上規(guī)律我們可以用代碼表示

public class UF{
    private int[] ids;
    private int count;
    public UF(int n) {
        count = n;
        ids = new int[n];
        for(int i=0; i<n; i++) {
            ids[i]=i;//為了簡(jiǎn)單都是從0到n的
        }
    }
    public int getCount() {
        return count;
    }
    public int find(int p) {
        return ids[p];
    }
    public boolean connect(int p, int q) {
        return find(p) == find(q);
    }
    public void union(int p, int q) {
        int pid = find(p);
        int qid = find(q);
        for(int i=0;i<ids.length;i++) {
            if(pid==ids[i]) ids[i] = qid; 
        }
        count--;
    }
}

ids數(shù)組下標(biāo)作為唯一區(qū)分人物的id秦士,那么數(shù)組值代表他們那一個(gè)門派的代表人物比如說(shuō)喬峰是1號(hào)那么ids[虛竹.id]=1,ids[段譽(yù).id]=1永高;(只是個(gè)簡(jiǎn)略版本后期會(huì)優(yōu)化)隧土;
count代表不同派系比如慕容復(fù)有自己一派系、喬峰有自己一個(gè)派系命爬、鳩摩智快樂(lè)的單身漢一派系曹傀。我們?cè)趺摧斎肽兀繑?shù)組大小代表有幾個(gè)人饲宛,然后通過(guò)每一對(duì)之間是否有關(guān)系組成各個(gè)派系皆愉。(大家可以試一試)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市艇抠,隨后出現(xiàn)的幾起案子幕庐,更是在濱河造成了極大的恐慌,老刑警劉巖家淤,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件异剥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡絮重,警方通過(guò)查閱死者的電腦和手機(jī)冤寿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門错妖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人疚沐,你說(shuō)我怎么就攤上這事暂氯。” “怎么了亮蛔?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵痴施,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我究流,道長(zhǎng)辣吃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任芬探,我火速辦了婚禮神得,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘偷仿。我一直安慰自己哩簿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布酝静。 她就那樣靜靜地躺著节榜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪别智。 梳的紋絲不亂的頭發(fā)上宗苍,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音薄榛,去河邊找鬼讳窟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛敞恋,可吹牛的內(nèi)容都是我干的丽啡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼耳舅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碌上!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起浦徊,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤馏予,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后盔性,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霞丧,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年冕香,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛹尝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片后豫。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖突那,靈堂內(nèi)的尸體忽然破棺而出挫酿,到底是詐尸還是另有隱情,我是刑警寧澤愕难,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布早龟,位于F島的核電站,受9級(jí)特大地震影響猫缭,放射性物質(zhì)發(fā)生泄漏葱弟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一猜丹、第九天 我趴在偏房一處隱蔽的房頂上張望芝加。 院中可真熱鬧,春花似錦射窒、人聲如沸藏杖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)制市。三九已至,卻和暖如春弊予,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背开财。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工汉柒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人责鳍。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓碾褂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親历葛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子正塌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,747評(píng)論 0 33
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理恤溶,服務(wù)發(fā)現(xiàn)乓诽,斷路器,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • 回溯算法 回溯法:也稱為試探法咒程,它并不考慮問(wèn)題規(guī)模的大小鸠天,而是從問(wèn)題的最明顯的最小規(guī)模開始逐步求解出可能的答案,并...
    fredal閱讀 13,660評(píng)論 0 89
  • 想不到標(biāo)題就不寫文章顯然不是好事情帐姻。 今天要寫的東西比較散稠集,都是親自經(jīng)歷的奶段。 其一,我答應(yīng)了同學(xué)幫著領(lǐng)書剥纷,后來(lái)排隊(duì)...
    876d41e866e3閱讀 190評(píng)論 0 0
  • 被查重前緊急借的鼠標(biāo)答辯結(jié)束后自然該歸還痹籍,在407待到晚上九點(diǎn)多想著下載幾部電影再連電腦一起抱回宿舍,無(wú)奈網(wǎng)速也放...
    和小忘閱讀 221評(píng)論 0 0