323. Number of Connected Components in an Undirected Graph
可以繼承 547. Number of Provinces 的做法,先轉換給定的 edges 成一個矩陣。
class Solution:
def countComponents(self, n: int, edges: List[List[int]]) -> int:
matrix = [[0]*n for _ in range(n)]
for edge in edges:
matrix[edge[0]][edge[1]] = 1
matrix[edge[1]][edge[0]] = 1
visited = set()
count = 0
def dfs(i):
for j in range(n):
if matrix[i][j] == 1 and j not in visited:
visited.add(j)
dfs(j)
for i in range(n):
if i not in visited:
visited.add(i)
dfs(i)
count += 1
return count但是這樣的速度太慢了,時間複雜度是 O(n^2) ,空間複雜度也是 O(n^2)。我們可以更一步的精簡,那就是把需要搜索的路徑記錄起來就好了。
記錄的方式可以透過 Hash Table ,key 是島嶼的編號,value 是一個陣列,包含了所有的 edges 。
Hash Table 的方式也可以用陣列的取代
Union Find
Last updated