130. Surrounded Regions
class Solution {
public void solve(char[][] board) {
// one round dfs by search from the boundaries
//search the '='
for(int i=0; i<board.length;i++){
dfs(board, i, 0);
dfs(board, i, board[0].length-1);
}
//search the '||'
for(int j=0; j<board[0].length; j++){
dfs(board, 0, j);
dfs(board, board.length-1, j);
}
for(int i=0; i<board.length; i++){
for(int j=0; j<board[0].length; j++){
// change O before V
if(board[i][j]=='O') board[i][j]='X';
if(board[i][j]=='V') board[i][j]='O';
}
}
}
private void dfs(char[][] board, int i, int j){
if(i<0 || j<0 || i>=board.length || j>=board[0].length){
return;
}
if(board[i][j]=='X' || board[i][j]=='V') return;
// mark 'O' to visited
board[i][j]='V';
dfs(board, i+1, j);
dfs(board, i-1, j);
dfs(board, i, j+1);
dfs(board, i, j-1);
}
}Last updated
Was this helpful?