Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9928779

Browse files
Merge pull request youngyangyang04#2404 from fwqaaq/patch-1
Update 0200.岛屿数量.深搜版.md
2 parents 62fd172 + 26c4004 commit 9928779

File tree

1 file changed

+31
-40
lines changed

1 file changed

+31
-40
lines changed

‎problems/0200.岛屿数量.深搜版.md‎

Lines changed: 31 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -389,50 +389,41 @@ function numIslands(grid: string[][]): number {
389389
### Go
390390

391391
```go
392+
393+
var DIRECTIONS = [4][2]int{{-1, 0}, {0, -1}, {1, 0}, {0, 1}}
394+
392395
func numIslands(grid [][]byte) int {
393-
// 用1标记已访问
394-
visited := make([][]int, len(grid))
395-
for i := 0; i < len(visited); i++{
396-
visited[i] = make([]int, len(grid[0]))
397-
}
396+
res := 0
398397

399-
var bfs func(x, y int)
400-
bfs = func(x, y int){
401-
stack := make([][]int, 0)
402-
stack = append(stack, []int{x, y})
403-
moveX := []int{1, -1, 0, 0}
404-
moveY := []int{0, 0, 1, -1}
405-
406-
for len(stack) != 0{
407-
node := stack[len(stack) - 1]
408-
stack = stack[:len(stack) - 1]
409-
410-
for i := 0; i < 4; i++{
411-
dx := moveX[i] + node[0]
412-
dy := moveY[i] + node[1]
413-
if dx < 0 || dx >= len(grid) || dy < 0 || dy >= len(grid[0]) || visited[dx][dy] == 1{
414-
continue
415-
}
416-
visited[dx][dy] = 1
417-
if grid[dx][dy] == '1'{
418-
stack = append(stack, []int{dx,dy})
419-
}
420-
}
421-
}
422-
}
398+
visited := make([][]bool, len(grid))
399+
for i := 0; i < len(grid); i++ {
400+
visited[i] = make([]bool, len(grid[0]))
401+
}
423402

424-
result := 0
425-
for i := 0; i < len(grid); i++{
426-
for j := 0; j < len(grid[0]); j++{
427-
if visited[i][j] == 0 && grid[i][j] == '1'{
428-
bfs(i, j)
429-
visited[i][j] = 1
430-
result++
431-
}
432-
}
433-
}
403+
for i, rows := range grid {
404+
for j, v := range rows {
405+
if v == '1' && !visited[i][j] {
406+
res++
407+
dfs(grid, visited, i, j)
408+
}
409+
}
410+
}
411+
412+
return res
413+
}
414+
415+
func dfs(grid [][]byte, visited [][]bool, i, j int) {
416+
visited[x][y] = true
417+
for _, d := range DIRECTIONS {
418+
x, y := i+d[0], j+d[1]
419+
if x < 0 || x >= len(grid) || y < 0 || y >= len(grid[0]) {
420+
continue
421+
}
422+
if grid[x][y] == '1' && !visited[x][y] {
423+
dfs(grid, visited, x, y)
424+
}
425+
}
434426

435-
return result
436427
}
437428
```
438429

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /