200.M 岛屿数量
Problem: 200. 岛屿数量
[TOC]
思路
做深度优先搜索,每次把访问到的元素的值从1改为0,然后深度优先搜索的次数即为岛屿的数量。
Code
func numIslands(grid [][]byte) int {
if len(grid) == 0 {
return 0
}
rows := len(grid)
cols := len(grid[0])
numsOfDfs := 0
for i := 0; i < rows; i++ {
for j := 0; j < cols; j++ {
if grid[i][j] == '1' {
numsOfDfs++
dfs(grid, i, j)
}
}
}
return numsOfDfs
}
func dfs(grid [][]byte, i int, j int) {
if i < 0 || i >= len(grid) || j < 0 || j >= len(grid[0]) {
return
}
if grid[i][j] == '0' {
return
}
grid[i][j] = '0'
dfs(grid, i-1, j)
dfs(grid, i+1, j)
dfs(grid, i, j-1)
dfs(grid, i, j+1)
}
Last updated
Was this helpful?