广度优先和深度优先算法实现LeetCode547朋友圈(Python)

系统 1542 0

针对本题,大部分题解是使用的深度优先算法实现的,本文提供了广度优先的解决方案。

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元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论