針對本題,大部分題解是使用的深度優先算法實現的,本文提供了廣度優先的解決方案。
1、深度優先
?
class Solution:
def findCircleNum(self, M):
visited, ans = set(), 0
def dfs(i):
for j in range(len(M[i])):
if M[i][j] and j not in visited:
visited.add(j)
dfs(j)
for i in range(len(M)):
if i not in visited:
dfs(i)
ans += 1
return ans
?
2、廣度優先
class Solution:
def findCircleNum(self, M):
queen = []
visited = set()
ans = 0
def bfs(i):
queen.append(i)
while queen:
i = queen[0]
queen.pop(0)
for j in range(len(M[i])):
if M[i][j] and j not in visited:
visited.add(j)
queen.append(j)
for i in range(len(M)):
if i not in visited:
bfs(i)
ans += 1
return ans
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
