0x01 深度優先搜索
題目描述:
這種題解題思路在於將連接在一起的‘1’看作是一個整體,可以將二維數組看成是無向圖,每個‘1’之間都連接着一條線
從頭到尾對數組進行遍歷,碰到‘1’就進行深度搜索,將搜索到的‘1’全部變爲‘0’, 這樣發起深度搜索的次數就是島嶼的數量
代碼如下:
class Solution(object):
def numIslands(self, grid):
"""
:type grid: List[List[str]]
:rtype: int
"""
def dfs(grid, i, j):
grid[i][j] == 0
for x, y in [(i-1, j), (i+1, j), (i, j-1), (i, j+1)]:
if 0 <= x < len(grid) and 0 <= y < len(grid[0]) and grid[x][y] == '1':
grid[x][y] =0
dfs(grid, x, y)
n_r = len(grid)
if n_r == 0:
return 0
n_l = len(grid[0])
island_num = 0
for i in range(n_r):
for j in range(n_l):
if grid[i][j] == '1':
island_num += 1
dfs(grid, i, j)
return island_num