给定一个矩阵,包含X和O,将其中被X包围的O全部替换成X。
思路:
1、遍历四边上的O,并深度遍历与其相连的O,将这些O替换成*
2、将剩余的O变成X,将*变成O
代码:
public class Solution {
public void solve(char[][] board) {
if(board==null || board.length<=0 || board[0].length<=0)
return;
int rowNum = board.length;
int colNum = board[0].length;
for(int i=0;i<colNum;++i) {
dfs(board,0,i);
dfs(board,rowNum-1,i);
}
for(int i=0;i<rowNum;++i) {
dfs(board,i,0);
dfs(board,i,colNum-1);
}
for(int i=0;i<rowNum;++i) {
for(int j=0;j<colNum;++j) {
if(board[i][j]=='O') {
board[i][j] = 'X';
}
if(board[i][j]=='*') {
board[i][j] = 'O';
}
}
}
}
public void dfs(char[][]board,int row,int col) {
int rowNum = board.length;
int colNum = board[0].length;
if(board[row][col]=='O') {
board[row][col] = '*';
if(row>1) {
dfs(board,row-1,col);
}
if(row<rowNum-1) {
dfs(board,row+1,col);
}
if(col>1) {
dfs(board,row,col-1);
}
if(col<colNum-1) {
dfs(board,row,col+1);
}
}
}
}