岛屿的数量

两个错误的点:
1.误解题意:题目传进来的不一定是正方形,可能是长方形,所以grid的长度和每行的长度不一致
2.covered函数中如果这个点已经是0就不必再遍历周围的值,也就是它是岛屿的边,遇到边就停


def numIslands(grid):
    def covered(i: object, j: object) -> object:
        nonlocal grid, l,k
        if grid[i][j] == '0':
            return
        grid[i][j] = '0'
        if -1 < i - 1 < l and -1 < j < k and grid[i - 1][j] == '1':
            covered(i - 1, j)
        if -1 < i + 1 < l and -1 < j < k and grid[i + 1][j] == '1':
            covered(i + 1, j)
        if -1 < i < l and -1 < j - 1 < k and grid[i][j - 1] == '1':
            covered(i, j - 1)
        if -1 < i < l and -1 < j + 1 < k and grid[i][j + 1] == '1':
            covered(i, j + 1)
    l = len(grid)
    k = len(grid[0])
    count = 0
    for i in range(l):
        for j in range(k):
            if grid[i][j] == '1':
                print(f'{i}-{j}')
                count += 1
                covered(i, j)
            continue
    return count
grid = [
    ["1", "1", "0", "0", "0"],
    ["1", "1", "0", "0", "0"],
    ["0", "0", "1", "0", "0"],
    ["0", "0", "0", "1", "1"]
]

···
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 200. 岛屿数量 相关标签: BFS DFS 并查集 221. 最大正方形 相关标签 : 动态规划 93. 复原...
    Kevifunau阅读 405评论 0 0
  • 题目 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平...
    环宇飞杨阅读 138评论 0 0
  • 题目描述 leetcode 第200题:岛屿数量[https://leetcode-cn.com/problems...
    Yohann丶blog阅读 223评论 0 0
  • 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座...
    刻苦驴哝阅读 231评论 0 0
  • 题意 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且...
    简单方式阅读 154评论 0 2