Given a 2D board containing 'X'
and 'O'
, capture all regions surrounded by 'X'
.
A region is captured by flipping all 'O'
s into 'X'
s in that surrounded region.
For example,
X X X X X O O X X X O X X O X X
After running your function, the board should be:
X X X X X X X X X X X X X O X X
class Solution { public: void searchBoard(vector<vector<char>> &board,int x,int y){ if(x<0||x>=board.size()||y<0||y>=board[0].size()) return; if(board[x][y]=='O'){ board[x][y]='1'; searchBoard(board,x,y+1); searchBoard(board,x,y-1); searchBoard(board,x+1,y); searchBoard(board,x-1,y); } } void solve(vector<vector<char>> &board) { if(board.size()<3||board[0].size()<3) return; int row=board.size(),col=board[0].size(); for(int i=1;i<row-1;i++) //left if(board[i][0]=='O') searchBoard(board,i,0); for(int i=1;i<row-1;i++) //right if(board[i][col-1]=='O') searchBoard(board,i,col-1); for(int i=0;i<col;i++) //up if(board[0][i]=='O') searchBoard(board,0,i); for(int i=0;i<col;i++) //down if(board[row-1][i]=='O') searchBoard(board,row-1,i); for(int i=0;i<row;i++) for(int j=0;j<col;j++){ if(board[i][j]=='1') board[i][j]='O'; else if(board[i][j]=='O') board[i][j]='X'; } } };