2025每日刷题(248)
Leetcode---200. 岛屿数量

dfs实现代码
go
func numIslands(grid [][]byte) int {
m, n := len(grid), len(grid[0])
ans := 0
var dfs func(int, int)
dfs = func(i int, j int) {
if i < 0 || i >= m || j < 0 || j >= n {
return
}
if grid[i][j] != '1' {
return
}
grid[i][j] = 2
dfs(i + 1, j)
dfs(i, j - 1)
dfs(i - 1, j)
dfs(i, j + 1)
}
for i := range m {
for j := range n {
if grid[i][j] == '1' {
dfs(i, j)
ans++
}
}
}
return ans
}
运行结果

bfs实现代码
go
type rc struct {
row int
column int
}
func numIslands(grid [][]byte) int {
m, n := len(grid), len(grid[0])
ans := 0
directions := [][2]int{{1, 0}, {0, 1}, {-1, 0}, {0, -1}}
bfs := func(i int, j int) {
q := make([]rc, 0, 20)
q = append(q, rc{i, j})
grid[i][j] = '2'
for i := 0; i < len(q); i++ {
cur := q[i]
for _, d := range directions {
ti, tj := cur.row + d[0], cur.column + d[1]
if ti < 0 || ti >= m || tj < 0 || tj >= n {
continue
}
if grid[ti][tj] != '1' {
continue
}
grid[ti][tj] = '2'
q = append(q, rc{ti, tj})
}
}
}
for i := range m {
for j := range n {
if grid[i][j] == '1' {
ans++
bfs(i, j)
}
}
}
return ans
}
运行结果

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!