代码-DFS
思路同200题岛屿数量
本题通过判断是否还有和城市i相连的城市没有遍历,来进行深度优先遍历并且计数。
并且在进行深度优先遍历之前,要计算出孤立城市(一个城市就是一个省份)的数量。
最后返回两者之和
class Solution:
def findCircleNum(self, isConnected: List[List[int]]) -> int:
n=len(isConnected) # 城市数量
province=0
# 判断孤立城市数量
alone=0
for i in range(n):
if isConnected[i].count(1)==1:
alone+=1
# 找到与城市i相连的所有城市
def DFS(i):
for j in range(n):
if i!=j and isConnected[i][j]==1:
isConnected[i][j]=2
isConnected[j][i]=2 # 更新数值为2防止重复遍历
DFS(j)
return 'finish'
for i in range(n):
# 如果当前城市还有相连的城市,则进行深度遍历
if isConnected[i].count(1)>1:
DFS(i)
province+=1
return province+alone
孤立城市的判断放在最后也是一样的
for i in range(n):
# 如果当前城市还有相连的城市,则进行深度遍历
if isConnected[i].count(1)>1:
DFS(i)
province+=1
if isConnected[i].count(1)==1 and isConnected[i].count(2)==0:
province+=1
return province
该代码实现了一个利用深度优先搜索(DFS)算法来计算给定城市连接情况下的省份数量,包括孤立城市。首先,计算孤立城市数量,然后通过DFS遍历连接的城市并标记,最后返回省份总数(孤立城市数+连通组件数)。
119

被折叠的 条评论
为什么被折叠?



