Advertisement
Josif_tepe

Untitled

Sep 25th, 2023
598
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {
  4.        
  5.         vector<vector<int>> result = image;
  6.         int n = image.size();
  7.         int m = image[0].size();
  8.         vector<vector<bool>> visited(n, vector<bool>(m, false));
  9.         int di[] = {0, 0, -1, 1};
  10.         int dj[] = {-1, 1, 0, 0};
  11.        
  12.        
  13.         queue<int> q;
  14.         q.push(sr);
  15.         q.push(sc);
  16.         visited[sr][sc] = true;
  17.         int s_color = image[sr][sc];
  18.         result[sr][sc] = color;
  19.         while(!q.empty()) {
  20.             int ci = q.front();
  21.             q.pop();
  22.             int cj = q.front();
  23.             q.pop();
  24.            
  25.             for(int i = 0; i < 4; i++) {
  26.                 int ti = ci + di[i];
  27.                 int tj = cj + dj[i];
  28.                
  29.                 if(ti >= 0 and ti < n and tj >= 0 and tj < m and !visited[ti][tj] and image[ti][tj] == s_color) {
  30.                     q.push(ti);
  31.                     q.push(tj);
  32.                     visited[ti][tj] = true;
  33.                     result[ti][tj] = color;
  34.                 }
  35.             }
  36.            
  37.         }
  38.        
  39.         return result;
  40.     }
  41. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement