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



            



  • 相关阅读:
    Linux:sudo,没有找到有效的 sudoers 资源。
    Python中关于CSV文件中的I/O
    Python数据处理进阶——pandas
    脚本的含义
    Common.Logging.dll----------配置方式,可选引用,用于日志输出
    Net作业调度
    MySQL版本介绍
    在 Windows 上安装Rabbit MQ 指南
    版本控制器
    C# 中的占位符本质
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12881817.html
Copyright © 2011-2022 走看看