Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 46 additions & 1 deletion problems/0200.岛屿数量.广搜版.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,9 @@ class Solution {


### Python

BFS solution

```python
class Solution:
def __init__(self):
Expand Down Expand Up @@ -240,6 +242,7 @@ class Solution:

```
### JavaScript

```javascript
var numIslands = function (grid) {
let dir = [[0, 1], [1, 0], [-1, 0], [0, -1]]; // 四个方向
Expand Down Expand Up @@ -321,11 +324,53 @@ function numIslands2(grid: string[][]): number {
}
```

### Go

```go
var DIRECTIONS = [4][2]int{{-1, 0}, {0, -1}, {1, 0}, {0, 1}}

func numIslands(grid [][]byte) int {
res := 0

visited := make([][]bool, len(grid))
for i := 0; i < len(grid); i++ {
visited[i] = make([]bool, len(grid[0]))
}

for i, rows := range grid {
for j, v := range rows {
if v == '1' && !visited[i][j] {
res++
bfs(grid, visited, i, j)
}
}
}
return res
}

func bfs(grid [][]byte, visited [][]bool, i, j int) {
queue := [][2]int{{i, j}}
visited[i][j] = true // 标记已访问,循环中标记会导致重复
for len(queue) > 0 {
cur := queue[0]
queue = queue[1:]
for _, d := range DIRECTIONS {
x, y := cur[0]+d[0], cur[1]+d[1]
if x < 0 || x >= len(grid) || y < 0 || y >= len(grid[0]) {
continue
}
if grid[x][y] == '1' && !visited[x][y] {
visited[x][y] = true
queue = append(queue, [2]int{x, y})
}
}
}
}
```

### Rust

```rust

use std::collections::VecDeque;
impl Solution {
const DIRECTIONS: [(i32, i32); 4] = [(0, 1), (1, 0), (-1, 0), (0, -1)];
Expand Down