mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
Update 0200.岛屿数量.深搜版.md
This commit is contained in:
@ -389,50 +389,41 @@ function numIslands(grid: string[][]): number {
|
|||||||
### Go
|
### Go
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
|
||||||
|
var DIRECTIONS = [4][2]int{{-1, 0}, {0, -1}, {1, 0}, {0, 1}}
|
||||||
|
|
||||||
func numIslands(grid [][]byte) int {
|
func numIslands(grid [][]byte) int {
|
||||||
// 用1标记已访问
|
res := 0
|
||||||
visited := make([][]int, len(grid))
|
|
||||||
for i := 0; i < len(visited); i++{
|
|
||||||
visited[i] = make([]int, len(grid[0]))
|
|
||||||
}
|
|
||||||
|
|
||||||
var bfs func(x, y int)
|
visited := make([][]bool, len(grid))
|
||||||
bfs = func(x, y int){
|
for i := 0; i < len(grid); i++ {
|
||||||
stack := make([][]int, 0)
|
visited[i] = make([]bool, len(grid[0]))
|
||||||
stack = append(stack, []int{x, y})
|
}
|
||||||
moveX := []int{1, -1, 0, 0}
|
|
||||||
moveY := []int{0, 0, 1, -1}
|
|
||||||
|
|
||||||
for len(stack) != 0{
|
for i, rows := range grid {
|
||||||
node := stack[len(stack) - 1]
|
for j, v := range rows {
|
||||||
stack = stack[:len(stack) - 1]
|
if v == '1' && !visited[i][j] {
|
||||||
|
res++
|
||||||
|
dfs(grid, visited, i, j)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for i := 0; i < 4; i++{
|
return res
|
||||||
dx := moveX[i] + node[0]
|
}
|
||||||
dy := moveY[i] + node[1]
|
|
||||||
if dx < 0 || dx >= len(grid) || dy < 0 || dy >= len(grid[0]) || visited[dx][dy] == 1{
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
visited[dx][dy] = 1
|
|
||||||
if grid[dx][dy] == '1'{
|
|
||||||
stack = append(stack, []int{dx,dy})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
result := 0
|
func dfs(grid [][]byte, visited [][]bool, i, j int) {
|
||||||
for i := 0; i < len(grid); i++{
|
for _, d := range DIRECTIONS {
|
||||||
for j := 0; j < len(grid[0]); j++{
|
x, y := i+d[0], j+d[1]
|
||||||
if visited[i][j] == 0 && grid[i][j] == '1'{
|
if x < 0 || x >= len(grid) || y < 0 || y >= len(grid[0]) {
|
||||||
bfs(i, j)
|
continue
|
||||||
visited[i][j] = 1
|
}
|
||||||
result++
|
if grid[x][y] == '1' && !visited[x][y] {
|
||||||
}
|
visited[x][y] = true
|
||||||
}
|
dfs(grid, visited, x, y)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return result
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user