200 島嶼數量 leetcode

2022-06-30 19:36:08 字數 913 閱讀 3587

思路:  深度遍歷

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<=xset_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

LeetCode 200 島嶼數量

給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000輸出 1 示例 2 輸入 11000 11000 00100 00...

leetcode200 島嶼數量

可以遍歷矩陣中的每個位置,如果遇到1就將與其相連的一片1都感染成2 dfs 並自增島數量。class solution object def numislands self,grid type grid list list str rtype int res 0 if not grid return...

leetcode 200 島嶼數量

給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1思路 線性掃瞄整個二維網格,如果乙個結點包含 1,則以其...