leetcode323:无向图中的连通区域的个数

题目描述:

参考博客:https://www.cnblogs.com/grandyang/p/5166356.html

题目地址:https://leetcode.com/problems/number-of-connected-components-in-an-undirected-graph/

leetcode323:无向图中的连通区域的个数_第1张图片

 

代码实现:

#方法一:并查集
n = 5
v = [[0, 1], [1, 2], [3, 4]]

def get_root(root, i):
    while i != root[i]:
        i = root[i]
    return i

res = n
root = []
for i in range(n):
    root.append(i)

for edge in v:
    edge1 = get_root(root, edge[0])
    edge2 = get_root(root, edge[1])
    if edge1 != edge2:
        res -= 1
        root[edge1] = root[edge2] 
print(res)
#方法二:DFS
n = 5
v = [[0, 1], [1, 2], [3, 4]]

def helper(g, visited, i):
    if visited[i]:
        return
    visited[i] = True
    for j in range(len(g[i])):
        helper(g, visited, g[i][j])
   
n = 5
g = [[] for _ in range(n)]
res = 0
visited = [False] * n
##创建邻接表
for edge in v:
    g[edge[0]].append(edge[1])
    g[edge[1]].append(edge[0])

for i in range(n):
    if not visited[i]:
       res += 1
       helper(g, visited, i)
print(res)

 

你可能感兴趣的:(刷题记录)