並查集應用 leetcode547朋友圈

2021-10-02 15:34:03 字數 1027 閱讀 8747

班上有 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。

示例 2:

輸入:[[1,1,0],

[1,1,1],

[0,1,1]]

輸出: 1

說明:已知學生0和學生1互為朋友,學生1和學生2互為朋友,所以學生0和學生2也是朋友,所以他們三個在乙個朋友圈,返回1。

注意:n 在[1,200]的範圍內。

對於所有學生,有m[i][i] = 1。

如果有m[i][j] = 1,則有m[j][i] = 1。

思路: 實現原理是並查集。細節有差異

class

solution

}public

intfind

(int p)

return p;

}public

void

union

(int p,

int q)

else

if(rank[proot]

> rank[qroot]

)else

--count;

}public

intgetcount()

}public

intfindcirclenum

(int

m)}}

return uf.

getcount()

;}}

LeetCode 54 螺旋矩陣

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11...

leetcode54 螺旋矩陣

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11...

leetcode 54 螺旋矩陣

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 思路是 方向陣列 邊界調整 如下 class solution void matain int x,int...