1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | class Solution {
private:
int N, M;
int dirX[4] = {0, 1, 0, -1};
int dirY[4] = {1, 0, -1, 0};
void dfs(int x, int y, int color, vector<vector<int>> &image) {
int originalColor = image[x][y];
if (originalColor == color)
return;
image[x][y] = color;
for (int i = 0; i < 4; i++) {
int dx = x + dirX[i];
int dy = y + dirY[i];
if (dx >= 0 && dx < N && dy >= 0 && dy < M &&
image[dx][dy] == originalColor)
dfs(dx, dy, color, image);
}
}
public:
vector<vector<int>> floodFill(vector<vector<int>> &image, int x, int y,
int color) {
N = image.size();
M = image[0].size();
dfs(x, y, color, image);
return image;
}
};
|