题解 | #岛屿数量#
岛屿数量
http://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e
向四个方向进行感染并标记.
class Solution:
def solve(self, grid: List[List[str]]) -> int:
# write code here
m = len(grid)
n = len(grid[0])
# 感染过程
def findother(grid, x, y):
# 越界 return
if x < 0 or x >= m or y < 0 or y >= n:
return
# 遇到海水0或已经感染过的岛2 return
if grid[x][y] == "2" or grid[x][y] == "0":
return
# 改变当前岛并继续感染
if grid[x][y] == "1":
grid[x][y] = "2"
findother(grid, x - 1, y)
findother(grid, x + 1, y)
findother(grid, x, y - 1)
findother(grid, x, y + 1)
res = 0
for x in range(m):
for y in range(n):
if grid[x][y] == "1":
res += 1
findother(grid, x, y)
return res