Advertisement
Singasking

Untitled

Jun 24th, 2023
1,301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     vector<vector<char>> solve(vector<vector<char>>& board) {
  4.         //NXM grid
  5.         int N = board.size();
  6.         int M = board[0].size();
  7.         vector<vector<char>> values(N,vector<char>(M,'X'));
  8.          vector<vector<int>> visited(N,vector<int>(M,0));
  9.         queue<pair<int,int>> q;
  10.         for(int i=0;i<N;i++) {
  11.             for(int j=0;j<M;j++) {
  12.  
  13.                 //If its a boundary O, mark all of it as unchangeable via bfs
  14.                 if(i==0 or j==0 or i==N-1 or j==M-1) {
  15.  
  16.                     if(board[i][j]=='O' && visited[i][j]==0) {
  17.                         //We have not processed it. add it to the queue
  18.                         //we run bfs
  19.                         visited[i][j]=1;
  20.                         values[i][j]='O';
  21.                         q.push({i,j});
  22.                         while(q.empty()==false) {
  23.                             auto temp = q.front();
  24.                             q.pop();
  25.                             int r = temp.first;
  26.                             int c = temp.second;
  27.                             vector<pair<int,int>> dirs = {{r+1,c},{r-1,c},{r,c+1},{r,c-1}};
  28.                             for(auto dir:dirs) {
  29.                                 //Validation check
  30.  
  31.                                 int rn = dir.first;
  32.                                 int cn = dir.second;
  33.  
  34.                                 if(rn<0 or rn>=N or cn<0 or cn>=M) { continue;}
  35.  
  36.                                 if(board[rn][cn]=='O' && visited[rn][cn]==0) {
  37.                                     q.push({rn,cn});
  38.                                     visited[rn][cn]=1;
  39.                                     values[rn][cn]='O';
  40.                                 }
  41.  
  42.                             }
  43.  
  44.                         }
  45.  
  46.                     }
  47.  
  48.                 }
  49.             }
  50.            
  51.         }
  52.        
  53.             return values;
  54.     }
  55. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement