#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 判断岛屿数量
# @param grid char字符型二维数组
# @return int整型
#
class Solution:
def solve(self , grid: List[List[str]]) -> int:
# write code here
width = len(grid)
height = len(grid[0])
lands = []
for i in range(width):
for j in range(height):
if grid[i][j] == "1":
lands.append((i, j))
count = 0
while lands:
queue = lands.pop(0)
if grid[queue[0]][queue[1]] == "2":
continue
queue = [queue]
while queue:
(i, j) = queue.pop(0)
for (a, b) in [(0, 1), (0, -1), (1, 0), (-1, 0)]:
i_s = i + a
j_s = j + b
if 0 <= i_s < width and 0 <= j_s < height and grid[i_s][j_s] == "1":
queue.append((i_s, j_s))
grid[i_s][j_s] = "2"
count += 1
return count