有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。
省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。
給你乙個 n x n 的矩陣 isconnected ,其中 isconnected[i][j] = 1 表示第 i 個城市和第 j 個城市直接相連,而 isconnected[i][j] = 0 表示二者不直接相連。
返回矩陣中 省份 的數量。
簡要題解
顯然可以看出這是乙個並查集的模板題 直接把相互連通的放在乙個組內即可。
並查集部分主要**如下 首先初始化**假設為乙個森林主要**如下
void
init()
找祖先**主要如下
int find
(int x)
合併的**如下
void
union
(int x,int y)
該題主要**如下所示
class
solution
int findcirclenum
(vector>
& isconnected)
}return ans;}}
;
LeetCode 547 省份數量
題目鏈結 有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給你乙個 n x n 的矩陣 isconnected 其中 isconn...
LeetCode 547 省份數量
有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給你乙個 n x n 的矩陣 isconnected 其中 isconnected...
leetcode之路 547 省份數量
以上所有問題,抽象,概括為分組問題 大家主要了解一下並查集的兩種優化方法,路徑壓縮使得所有節點在被查詢過後都直接連在根節點上 這樣下次查詢的時候就可以o 1 查到他屬於哪個組 按深度合併分組可以保證樹的深度不會過分增長。這個題可謂練手並查集的好題目 如下class solution 找到某個節點的根...