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;
5 int valid(int sr, int sc) { return sr >= 0 && sr < m && sc >= 0 && sc < n; }
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 }
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;
19 m = image.size();
20 n = image[0].size();
21 this->color = color;
22 this->image = &image;
24 q.push(make_pair(sr, sc));
25 image[sr][sc] = color;
27 while (!q.empty()) {
28 int sr = q.front().first;
29 int sc = q.front().second;
30 q.pop();
32 add(sr + 1, sc);
33 add(sr - 1, sc);
34 add(sr, sc + 1);
35 add(sr, sc - 1);
36 }
38 return image;
39 }
40 };