class Solution {
int m, n;
private void dfs(char[][] board, int x, int y) {
if (x < 0 || y < 0 || x >= m || y >= n) {
return;
}
if (board[x][y] != 'O') {
return;
}
board[x][y] = 'a';
dfs(board, x - 1, y);
dfs(board, x, y - 1);
dfs(board, x + 1, y);
dfs(board, x, y + 1);
}
public void solve(char[][] board) {
m = board.length;
n = board[0].length;
for (int i = 0; i < m; i++) {
if (board[i][0] == 'O') {
dfs(board, i, 0);
}
}
for (int i = 0; i < m; i++) {
if (board[i][n - 1] == 'O') {
dfs(board, i, n - 1);
}
}
for (int i = 0; i < n; i++) {
if (board[0][i] == 'O') {
dfs(board, 0, i);
}
}
for (int i = 0; i < n; i++) {
if (board[m - 1][i] == 'O') {
dfs(board, m - 1, i);
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (board[i][j] == 'a') {
board[i][j] = 'O';
} else if (board[i][j] == 'O') {
board[i][j] = 'X';
}
}
}
}
}
130. 被围绕的区域
最新推荐文章于 2024-10-15 19:28:18 发布