• leetcode-200 岛屿数量


    给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

    岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。

    此外,你可以假设该网格的四条边均被水包围。

    遍历求联通性,递归+方向 感觉好憨

    def check(a,total):
    
        x,y = len(a),len(a[0])
        for i in range(x):
            for j in range(y):
                if a[i][j] == 0:
                    continue
                if a[i][j] == 1:
                    # 找到当前的开始点
                    a[i][j] = '0'
                    total += 1
                    dfs(i,j,a,x,y)
    
    
        #
        return total
    
    
    def dfs(x, y, a,m ,n):
    
    #     方向 上 左 下 右
        directions = [(-1, 0), (0, 1), (1, 0), (0, -1)]
        for dire in directions:
            # 考虑边界情况
            tmp = (x+dire[0],y+dire[1])
            if 0 <= tmp[0] <= m-1 and 0 <= tmp[1] <= n-1:
                if a[tmp[0]][tmp[1]] == 1:
                    a[tmp[0]][tmp[1]] = 0
                    dfs(tmp[0],tmp[1],a,m,n)
    
    

    代码优化 看别人在dfs里面把坐标方向和当前坐标直接运算,写出来是为了更加通俗易懂

  • 相关阅读:
    c#委托与事件
    c#垃圾回收与资源管理
    c#接口、抽象类
    c#集合类、ArrayList、queue
    c#位运算
    c#索引器
    c#使用属性封装
    c#继承
    c#数组参数
    Lambda表达式
  • 原文地址:https://www.cnblogs.com/zengmu/p/13157518.html
Copyright © 2020-2023  润新知