Number of Islands
11110
11010
11000
0000011000
11000
00100
00011DFS
class Solution(object):
def numIslands(self, grid):
"""
:type grid: List[List[str]]
:rtype: int
"""
# 先判断行是否为0,再判断列是否为0
if len(grid) == 0 or len(grid[0]) == 0:
return 0
row = len(grid)
col = len(grid[0])
count = 0
for i in range(row):
for j in range(col):
if grid[i][j] == '1':
count += 1
self.dfsHelper(grid, i, j)
return count
def dfsHelper(self, grid, i, j):
if grid[i][j] == '0':
return
grid[i][j] = '0'
# up
if i-1 >= 0:
self.dfsHelper(grid, i-1, j)
# down
if i+1<=len(grid)-1:
self.dfsHelper(grid, i+1, j)
# left
if j-1>=0:
self.dfsHelper(grid, i, j-1)
# right
if j+1<=len(grid[0])-1:
self.dfsHelper(grid, i, j+1)BFS
Union Find
Last updated