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



            



  • 相关阅读:
    zepto.js介绍
    box-sizing属性
    响应式网页高度自适应原理
    固定-比例-固定
    常用的js正则验证
    mysql之连接查询(多表查询)
    数据约束
    mysql表数据的增删改查
    mysql学习之数据库管理与表管理
    滑动选项卡的制作
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12881817.html
Copyright © 2011-2022 走看看