130. 被包围的区域
回家之后真的会变变得很懒惰啊啊啊
这道题就是先找到靠近边缘的O,并全部标记成T,最后通过遍历将所有O设置成X,所有的T恢复成O
题目:


题解:
java
class Solution {
int l;
int r;
public void solve(char[][] board) {
if(board.length == 0) {
return ;
}
l = board.length;
r = board[0].length;
int i = 0;
int j = 0;
for(j=0;j<r;j++) {
if(board[0][j] == 'O') {
dfs(board,0,j);
}
if(board[l-1][j] == 'O') {
dfs(board,l-1,j);
}
}
for(i=0;i<l;i++) {
if(board[i][0] == 'O') {
dfs(board,i,0);
}
if(board[i][r-1] == 'O') {
dfs(board,i,r-1);
}
}
for(i=0;i<l;i++) {
for(j=0;j<r;j++) {
if(board[i][j] == 'O') {
board[i][j] = 'X';
}
else if(board[i][j] == 'T') {
board[i][j] = 'O';
}
}
}
}
void dfs(char[][] board, int x, int y) {
if(x < 0 || x >= l || y < 0 || y >= r || board[x][y] != 'O') {
return ;
}
board[x][y] = 'T';
dfs(board,x,y+1);
dfs(board,x+1,y);
dfs(board,x-1,y);
dfs(board,x,y-1);
}
}