zoukankan      html  css  js  c++  java
  • 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



            



  • 相关阅读:
    laravel底层源码解析:pipeline,db,console
    composer命令清单
    composer使用笔记
    git常见问题
    JS阻止冒泡和取消默认事件(默认行为)
    vue项目构建:vue-cli+webpack常用配置
    MVC和三层架构
    SSM框架初始配置
    Java对象间的关系
    Spring框架
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12881817.html
Copyright © 2011-2022 走看看