Skip to content

Latest commit

 

History

History
71 lines (49 loc) · 1.82 KB

0547-number-of-provinces.adoc

File metadata and controls

71 lines (49 loc) · 1.82 KB

547. 省份数量

n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。

省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。

给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。

返回矩阵中 省份 的数量。

示例 1:

{image_attr}

输入:isConnected = [[1,1,0],[1,1,0],[0,0,1]]
输出:2

示例 2:

{image_attr}

输入:isConnected = [[1,0,0],[0,1,0],[0,0,1]]
输出:3

提示:

  • 1 <= n <= 200

  • n == isConnected.length

  • n == isConnected[i].length

  • isConnected[i][j]10

  • isConnected[i][i] == 1

  • isConnected[i][j] == isConnected[j][i]

思路分析

这就是一道典型的并查集题目,所谓的“返回省份数量”就是求解连通分量。这道题的连通性是通过一个矩阵表示的,所以,首先需要将这个矩阵转换成一个 Union Find Set 并查集 中讲解的数组。由于 (i, j)(j, i) 表示的含义一样,所以只需要扫描矩阵的右上部分或者左下部分即可。代码如下:

一刷
link:{sourcedir}/_0547_NumberOfProvinces.java[role=include]

参考资料