python:
class Solution:
def floodFill(self, image, sr, sc, newColor):
"""
:type image: List[List[int]]
:type sr: int
:type sc: int
:type newColor: int
:rtype: List[List[int]]
"""
rows, columns = len(image), len(image[0])
same = image[sr][sc]
if newColor is same:
return image
def Fill(row, column):
if 0<=row<rows and 0<=column<columns and image[row][column] == same:
image[row][column] = newColor
else:
return
Fill(row+1, column)
Fill(row-1, column)
Fill(row, column+1)
Fill(row, column-1)
Fill(sr, sc)
return image
c++:
class Solution {
private:
int m_num;
int m_newColor;
int rows;
int cols;
public:
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
m_num = image[sr][sc];
if (m_num == newColor)
return image;
rows = image.size();
cols = image[0].size();
m_newColor = newColor;
fill(sr, sc, image);
return image;
}
void fill(int row, int col, vector<vector<int>>& image){
if( row<0 || row>=rows || col<0 || col>=cols || image[row][col]!=m_num)
return;
image[row][col] = m_newColor;
fill(row+1, col, image);
fill(row-1, col, image);
fill(row, col+1, image);
fill(row, col-1, image);
}
};