Update 0130.被围绕的区域.md

This commit is contained in:
fwqaaq
2024-01-15 17:29:34 +08:00
committed by GitHub
parent 73c06613f7
commit 52496f8fd6

View File

@ -563,7 +563,9 @@ function solve(board) {
### Go ### Go
```dfs dfs:
```go
var DIRECTIONS = [4][2]int{{-1, 0}, {0, -1}, {1, 0}, {0, 1}} var DIRECTIONS = [4][2]int{{-1, 0}, {0, -1}, {1, 0}, {0, 1}}
func solve(board [][]byte) { func solve(board [][]byte) {
@ -613,6 +615,64 @@ func dfs(board [][]byte, i, j int) {
} }
``` ```
bfs:
```go
var DIRECTIONS = [4][2]int{{-1, 0}, {0, -1}, {1, 0}, {0, 1}}
func solve(board [][]byte) {
rows, cols := len(board), len(board[0])
// 列
for i := 0; i < rows; i++ {
if board[i][0] == 'O' {
bfs(board, i, 0)
}
if board[i][cols-1] == 'O' {
bfs(board, i, cols-1)
}
}
// 行
for j := 0; j < cols; j++ {
if board[0][j] == 'O' {
bfs(board, 0, j)
}
if board[rows-1][j] == 'O' {
bfs(board, rows-1, j)
}
}
for _, r := range board {
for j, c := range r {
if c == 'A' {
r[j] = 'O'
}
if c == 'O' {
r[j] = 'X'
}
}
}
}
func bfs(board [][]byte, i, j int) {
queue := [][]int{{i, j}}
board[i][j] = 'A'
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(board) || y < 0 || y >= len(board[0]) {
continue
}
if board[x][y] == 'O' {
board[x][y] = 'A'
queue = append(queue, []int{x, y})
}
}
}
}
```
<p align="center"> <p align="center">
<a href="https://programmercarl.com/other/kstar.html" target="_blank"> <a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/> <img src="../pics/网站星球宣传海报.jpg" width="1000"/>