Surrounded Regions
int m = 0,n=0; void solve(vector<vector<char>> &board) { // Start typing your C/C++ solution below // DO NOT write int main() function if(board.empty()||board[0].empty()) return; m = board.size(); n = board[0].size(); int i,j; for(j=0;j<n;j++) { if(board[0][j]=='O') dfs(0,j,board); if(board[m-1][j]=='O') dfs(m-1,j,board); } for(i=1;i<m-1;i++) { if(board[i][0]=='O') dfs(i,0,board); if(board[i][n-1]=='O') dfs(i,n-1,board); } for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(board[i][j]=='+') board[i][j] = 'O'; else if(board[i][j]=='O') board[i][j] = 'X'; } } } void dfs(int i,int j,vector<vector<char>>& board) { if(i>=m||i<0||j<0||j>=n||board[i][j]!='O') return; board[i][j] = '+'; dfs(i-1,j,board); dfs(i+1,j,board); dfs(i,j-1,board); dfs(i,j+1,board); }