码迷,mamicode.com
首页 > 其他好文 > 详细

200.岛屿数量 leetcode

时间:2020-05-13 13:59:47      阅读:47      评论:0      收藏:0      [点我收藏+]

标签:com   深度遍历   inf   isl   img   维数   self   循环   坐标   

技术图片

 

思路:  深度遍历

  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

标签:com   深度遍历   inf   isl   img   维数   self   循环   坐标   

原文地址:https://www.cnblogs.com/ChevisZhang/p/12881817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!