695. 岛屿的最大面积
leetcode: 题目详情.
b站: 视频详解.
解法一、DFS
class Solution(object):
def maxAreaOfIsland(self, grid):
row, col = len(grid), len(grid[0])
max_area = 0
def dfs(grid, i, j):
if i>=0 and j>=0 and i<row and j<col and grid[i][j] == 1:
grid[i][j] = 0 # 剪枝 避免同一个1被选多次
return 1 + dfs(grid, i-1, j) + dfs(grid, i+1, j) + dfs(grid, i, j-1) + dfs(grid, i, j+1)
else:
return 0
for i in range(row):
for j in range(col):
max_area = max(max_area, dfs(grid, i, j))
return max_area
解法二、BFS
待更新
200. 岛屿数量
leetcode: 题目详情.
b站: 视频详解.
解法一、DFS
class Solution(object):
def numIslands(self, grid):
if not grid:
return 0
def dfs(grid, i, j): # 将每个岛屿全变成'0'
if i>=0 and j>=0 and i<row and j<col and grid[i][j]=='1':
grid[i][j] = '0'
dfs(grid, i-1, j)
dfs(grid, i+1, j)
dfs(grid, i, j-1)
dfs(grid, i, j+1)
row, col = len(grid), len(grid[0])
count = 0
for i in range(row):
for j in range(col):
if grid[i][j] == '1': # 必须加上这句 否则不管你是不是岛屿都会count+1
dfs(grid, i, j)
count += 1
return count
解法二、BFS
待更新