Leetcode刷題 冗餘連線

2021-10-08 12:09:43 字數 1298 閱讀 6539

輸入乙個圖,該圖由乙個有著n個節點 (節點值不重複1, 2, …, n) 的樹及一條附加的邊構成。附加的邊的兩個頂點包含在1到n中間,這條附加的邊不屬於樹中已存在的邊。

結果圖是乙個以邊組成的二維陣列。每乙個邊的元素是一對[u, v] ,滿足 u < v,表示連線頂點u 和v的無向圖的邊。

返回一條可以刪去的邊,使得結果圖是乙個有著n個節點的樹。如果有多個答案,則返回二維陣列中最後出現的邊。答案邊 [u, v] 應滿足相同的格式 u < v。

輸入: [[1,2], [1,3], [2,3]]

輸出: [2,3]

解釋: 給定的無向圖為:

1 / \

2 - 3

本題是對查並集的考察,先來學習一下查並集的知識。

csdn上有一篇對查並集詳細解釋的部落格,通俗易懂,這裡貼以下鏈結

查並集其實查並集簡單來講,就好比乙個摸個地區有乙個規模龐大的家族。結果導致大家找物件的時候犯難了,生怕跟對方有親戚關係。

有一天,隔壁的二狗看上了鄰村的阿美,想去跟他談物件,但是要先查一下家譜

int

find

(int x)

return r;

}

經過一趟find,二狗就能知道自己的祖宗是誰了,同樣的阿美也要find一下自己的祖宗。

boolean

join

(int x,

int y)

//有情人終成兄妹啊

return

false

;}

經過join之後,兩家原本沒關係,現在就聯絡起來了。

講了這麼多終於開始做題了。

1.遍歷所有的邊edges,將連通的結點放入同乙個集合,形成乙個聯通分量gg。

2.在遍歷的過程中,如果邊(a, b)(a,b)的兩個結點aa, bb已經屬於同一聯通分量,

則(a, b)(a,b)就是該聯通分量的冗餘邊。

class solution

for(int i =

0; i < row; i++

)return

null;}

int find

(int x)

return r;

} boolean join

(int x, int y)

return

false;}

}

時間複雜度約為:o(n)

空間複雜度:o(n)

Leetcode刷題筆記 685 冗餘連線 II

知識點 並查集 題目 在本問題中,有根樹指滿足以下條件的有向圖。該樹只有乙個根節點,所有其他節點都是該根節點的後繼。每乙個節點只有乙個父節點,除了根節點沒有父節點。輸入乙個有向圖,該圖由乙個有著n個節點 節點值不重複1,2,n 的樹及一條附加的邊構成。附加的邊的兩個頂點包含在1到n中間,這條附加的邊...

每日一題 冗餘連線 LeetCode 684

基本是個裸並查集的題目,從edges陣列中遍歷每條邊,並構造並查集。如果一條邊的兩個頂點,則這條邊就是構成迴路的最後一條邊。又因為無向圖是由一棵樹加上一條額外的邊所構成的,所以顯然,這樣的迴路只存在乙個,則這樣的一條邊就是所求。並查集 class solution return f nodes vo...

LeetCode684冗餘連線

在本問題中,樹指的是乙個連通且無環的無向圖。輸入乙個圖,該圖由乙個有著n個節點 節點值不重複1,2,n 的樹及一條附加的邊構成。附加的邊的兩個頂點包含在1到n中間,這條附加的邊不屬於樹中已存在的邊。結果圖是乙個以邊組成的二維陣列。每乙個邊的元素是一對 u,v 滿足u v,表示連線頂點u和v的無向圖的...