班上有 n 名學生。其中有些人是朋友,有些則不是。他們的友誼具有是傳遞性。如果已知 a 是 b 的朋友,b 是 c 的朋友,那麼我們可以認為 a 也是 c 的朋友。所謂的朋友圈,是指所有朋友的集合。
給定乙個 n * n 的矩陣 m,表示班級中學生之間的朋友關係。如果m[i][j] = 1,表示已知第 i 個和 j 個學生互為朋友關係,否則為不知道。你必須輸出所有學生中的已知的朋友圈總數。
示例 1:
輸入:[[1,1,0],
[1,1,0],
[0,0,1]]
輸出: 2
說明:已知學生0和學生1互為朋友,他們在乙個朋友圈。
第2個學生自己在乙個朋友圈。所以返回2。
並查集的思路會很簡單,找集合
時間複雜度n^2
//並查集 int p[i] = j 表示i的爸爸是j,根節點等於-1
//兩個節點是不是在乙個集合,看他們的根是不是一樣
class
solution
for(
int i =
0; i < n; i++)}
}int res =0;
for(
int i =
0; i < n; i++
)return res;
}int
newset
(int x)
intfind
(int x)
return t;
}int
unionset
(int x,
int y)
return t2;}}
;
刷題 力扣 547
題目鏈結 題目描述 有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給你乙個 n x n 的矩陣 isconnected 其中 i...
LeetCode C 刷題 13 16題題解
羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況下,羅馬數字中...
LeetCode C 刷題 53 56題題解
給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。1 雙指標法 2...