用 Python 编写程序,在一组好友关系中查找好友组的数量
pythonserver side programmingprogramming
假设我们有一个好友列表,其中 friends[i] 是 i 的好友列表。友谊关系是双向的。每个人都是自己的好友,只要有一条共同好友路径将他们连接起来,两个人就属于一个好友组。我们必须找到朋友组的总数。
因此,如果输入为 friends = [[0, 1, 5],[1, 0],[2],[3, 4],[4, 3],[5, 0]],则输出将为 3,因为三个朋友组如下所示 −

为了解决这个问题,我们将遵循以下步骤 −
- nodes := friends 的大小
- visited := 与节点大小相同的列表并填充 False
- ans := 0
- 定义一个函数 dfs() 。这将接受 vertex, accessed
- visited[vertex] := True
- 对于 friends[vertex] 中的每个 nei,执行
- 如果 accessed[nei] 为 false,则
- dfs(nei, accessed)
- 如果 accessed[nei] 为 false,则
- 从主方法中,执行以下操作 −
- 对于范围为 0 到 nodes 的 i,执行
- 如果 accessed[i] 为 false,则
- dfs(i, visited)
- ans := ans + 1
- 如果 accessed[i] 为 false,则
- 返回 ans
让我们看看下面的实现以便更好地理解 −
示例
class Solution: def solve(self, friends): nodes = len(friends) visited = [False for _ in range(nodes)] ans = 0 def dfs(vertex, visited): visited[vertex] = True for nei in friends[vertex]: if not visited[nei]: dfs(nei, visited) for i in range(nodes): if not visited[i]: dfs(i, visited) ans += 1 return ans ob = Solution() friends = [ [0, 1, 5], [1, 0], [2], [3, 4], [4, 3], [5, 0] ] print(ob.solve(friends))
输入
[[0, 1, 5], [1, 0], [2], [3, 4], [4, 3], [5, 0] ]
输出
3
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

