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



            



  • 相关阅读:
    Eclipse中项目去除Js验证
    Web安全扫描工具
    Oracle-定时任务
    About_Return
    About_php_封装函数
    About_PHP_函数
    About_PHP_验证码的生成
    About_PHP_文件的上传
    About_MySQL Select--来自copy_03
    About_AJAX_03
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12881817.html
Copyright © 2011-2022 走看看