思路: 深度遍歷
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,則以其...