200.岛屿数量 leetcode

Posted ChevisZhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了200.岛屿数量 leetcode相关的知识,希望对你有一定的参考价值。

 

思路:  深度遍历

  1.第一层main函数里 两层循环找 grid[x][y] == \'1\' 的点 res += 1

  2.递归函数里,把与该点四个方向相邻的,值为‘1’的点全部标0

   标0方法: 对坐标(x,y)四个方向中 值 == ‘1’ 的赋0 再递归。

 

注意:

  1. 对于二维数组,判空要用  if len( grid ) == 0: return 0

   我之前的错误用法是 if not grid: return 0   

   因为即使空的二维数组 也是 [ [  ] ]

 代码:

 

class Solution:
    def numIslands(self, grid: List[List[str]]) -> int:
        
        def set_to_zero(row,col,grid):
            grid[row][col] = \'0\'
            dirs = [(row,col-1),(row-1,col),(row+1,col),(row,col+1)]
            nr = len(grid)
            nc = len(grid[0])
            for x,y in dirs:
                if   0<=x<nr and 0<=y<nc and grid[x][y] == \'1\':
                    set_to_zero(x,y,grid)

        if not grid or len(grid[0]) == 0:
            return 0
        res = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] == \'1\':
                    res+=1
                    set_to_zero(i,j,grid)
        return res



        



 

以上是关于200.岛屿数量 leetcode的主要内容,如果未能解决你的问题,请参考以下文章

力扣 200. 岛屿数量

200.岛屿数量

LeetCode 200. 岛屿数量

200. 岛屿数量

岛屿数量(力扣第200题)

leetcode200.岛屿数量