200.岛屿数量 leetcode
Posted ChevisZhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于200.岛屿数量 leetcode的主要内容,如果未能解决你的问题,请参考以下文章