https://leetcode-cn.com/problems/number-of-islands/submissions/
class Solution(object):
def __init__(self):
self.result = 0
def serachIslands(self, grid, i, j):
if i >= len(grid) or i < 0 or j >= len(grid[0]) or j < 0 or grid[i][j] == '0':
return
grid[i][j] = '0'
round = [(0, 1), (0, -1), (1, 0), (-1, 0)]
for tmp in round:
self.serachIslands(grid, i + tmp[0], j + tmp[1])
return
def numIslands(self, grid):
"""
:type grid: List[List[str]]
:rtype: int
"""
# 就是记录1的数量,深度优先或者广度优先遍历都可以
if len(grid) == 0:
return 0
for i in range(0, len(grid)):
for j in range(0, len(grid[0])):
if grid[i][j] == '1':
self.serachIslands(grid, i, j) # 找到1之后,找到所有相连的1,这是一个岛屿,把这些1都置为0,避免影响下一次搜索
self.result += 1
return self.result