200.岛屿数量

leetcode

深度优先搜索

时间复杂度:O(MN)
空间复杂度:O(MN)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
func numIslands(grid [][]byte) int {
result := 0

var dfs func(int, int, int)

dfs = func(row int, col int, count int){
if row < 0 || col < 0 || row >= len(grid) || col >= len(grid[0]) {
return
}

if string(grid[row][col]) == "0" || string(grid[row][col]) == "2" {
return
}

// if count > 0 {
// fmt.Printf("grid: %v\n", grid)
// }
grid[row][col] = '2'
result += count

dfs(row - 1, col, 0) //上
dfs(row, col + 1, 0) //右
dfs(row + 1, col, 0) //下
bfs(row, col - 1, 0) //左
}

for i := 0; i < len(grid); i++ {
for j := 0; j < len(grid[0]); j++ {
bfs(i, j, 1)
}
}

return result
}

200.岛屿数量
https://blog.jerrylee.me/2021/09/28c37fe4d19d.html
作者
Jerry Lee
发布于
2021年9月20日
许可协议