200. Number of Islands

200. Number of Islands
一看就是深度优先的遍历
class Solution(object):
def numIslands(self, grid):
"""
:type grid: List[List[str]]
:rtype: int
"""
res = 0
if grid == []:
return res
m, n = len(grid), len(grid[0])
for i in range(m):
for j in range(n):
if grid[i][j] == '1':
res += 1
self.DFS(grid, m, n, i, j)
return res
def DFS(self, grid, m, n, a, b):
grid[a][b] = '0'
direction = [(1,0),(-1,0),(0,1),(0,-1)]
for i in range(4):
x = a + direction[i][0]
y = b + direction[i][1]
if x>=0 and x<m and y>=0 and y<n and grid[x][y]=='1':
self.DFS(grid, m, n, x, y)