有 n
个城市,其中一些彼此相连,另一些没有相连。如果城市 a
与城市 b
直接相连,且城市 b
与城市 c
直接相连,那么城市 a
与城市 c
间接相连。
省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。
给你一个 n x n
的矩阵 isConnected
,其中 isConnected[i][j] = 1
表示第 i
个城市和第 j
个城市直接相连,而 isConnected[i][j] = 0
表示二者不直接相连。
返回矩阵中 省份 的数量。
示例 1:
输入:isConnected = [[1,1,0],[1,1,0],[0,0,1]] 输出:2
示例 2:
输入:isConnected = [[1,0,0],[0,1,0],[0,0,1]] 输出:3
提示:
-
1 <= n <= 200
-
n == isConnected.length
-
n == isConnected[i].length
-
isConnected[i][j]
为1
或0
-
isConnected[i][i] == 1
-
isConnected[i][j] == isConnected[j][i]
这就是一道典型的并查集题目,所谓的“返回省份数量”就是求解连通分量。这道题的连通性是通过一个矩阵表示的,所以,首先需要将这个矩阵转换成一个 Union Find Set 并查集 中讲解的数组。由于 (i, j)
和 (j, i)
表示的含义一样,所以只需要扫描矩阵的右上部分或者左下部分即可。代码如下:
- 一刷
-
link:{sourcedir}/_0547_NumberOfProvinces.java[role=include]