在本問題中, 樹指的是乙個連通且無環的無向圖。
輸入乙個圖,該圖由乙個有著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], [2,3], [3,4], [1,4], [1,5]]
輸出: [1,4]
解釋: 給定的無向圖為:
n個節點,m個關係,求解不相交集合查詢和合併問題,直接套用並查集板子,並查集四要素
初始化查詢
路徑壓縮合併
1 初始化
初始化每個節點的父節點(掌門),以示例2為例
pre[1] = 1; pre[2] = 2; pre[3] = 3; pre[4] = 4; pre[5] = 5;
2 查詢 + 3 路徑壓縮
遍歷陣列,查詢節點i
的掌門是否跟節點j
的掌門為同乙個人(此處的掌門是另乙個大神寫的生動形象故事,文章最後會把大神部落格位址貼出來),如果是同乙個,則表明該關係是冗餘的,因為陣列前面已經有關係把此處的兩個節點聯通了,題目及測試用例已經假設不會出現不合理的情況,所以此處可以直接返回該關係。
for
(int index=
0; index
)}
public
intfind
(int x)
4 合併
並查集的模板**,昨天才剛接觸並查集,此處再手敲一遍,增加印象,哈哈哈~
超有愛的並查集~
並查集 冗餘連線
思路 記錄1到n的每個數的根,因為如果有環,導致環相連的 u,v 一定有相同的root,我們可以理解為是乙個節點的兩個分支,通過 u,v 被連起來了,既然他們是乙個節點的兩個分支,那麼他們一定有相同的root,所以直接移除 u,v 就好啦。class solution def findredunda...
(並查集)684 冗餘連線
在本問題中,樹指的是乙個連通且無環的無向圖。輸入乙個圖,該圖由乙個有著n個節點 節點值不重複1,2,n 的樹及一條附加的邊構成。附加的邊的兩個頂點包含在1到n中間,這條附加的邊不屬於樹中已存在的邊。結果圖是乙個以邊組成的二維陣列。每乙個邊的元素是一對 u,v 滿足 u v,表示連線頂點u 和v的無向...
684 冗餘連線 並查集
在本問題中,樹指的是乙個連通且無環的無向圖。輸入乙個圖,該圖由乙個有著n個節點 節點值不重複1,2,n 的樹及一條附加的邊構成。附加的邊的兩個頂點包含在1到n中間,這條附加的邊不屬於樹中已存在的邊。結果圖是乙個以邊組成的二維陣列。每乙個邊的元素是一對 u,v 滿足 u v,表示連線頂點u 和v的無向...