leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0733.cpp (1007B)


0 class Solution { 1 int m, n, src, color; 2 vector<vector<int>> *image; 3 queue<pair<int, int>> q; 4 5 int valid(int sr, int sc) { return sr >= 0 && sr < m && sc >= 0 && sc < n; } 6 7 void add(int sr, int sc) { 8 if (valid(sr, sc) && (*image)[sr][sc] == src) { 9 (*image)[sr][sc] = color; 10 q.push(make_pair(sr, sc)); 11 } 12 } 13 14 public: 15 vector<vector<int>> floodFill(vector<vector<int>> &image, int sr, int sc, int color) { 16 src = image[sr][sc]; 17 if (src == color) return image; 18 19 m = image.size(); 20 n = image[0].size(); 21 this->color = color; 22 this->image = &image; 23 24 q.push(make_pair(sr, sc)); 25 image[sr][sc] = color; 26 27 while (!q.empty()) { 28 int sr = q.front().first; 29 int sc = q.front().second; 30 q.pop(); 31 32 add(sr + 1, sc); 33 add(sr - 1, sc); 34 add(sr, sc + 1); 35 add(sr, sc - 1); 36 } 37 38 return image; 39 } 40 };