思路:
0,将当前点渲染为新颜色,并进入深度优先搜索dfs递归体
1,往上下左右四个方向分别进行dfs搜索
2,要防止回退到出发点,加入判断语句,以防止陷入死循环
3,对1,2步递归进行
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]]
"""
ogColor = image[sr][sc]
image[sr][sc] = newColor
mark =[[sr,sc]] # 用于标记去过的点
return self.dfs(image, sr, sc, ogColor, newColor, mark)
def dfs(self, image, i, j, ogColor, newColor, mark):
h = len(image)
w = len(image[0])
direction = [[1,0], [0,1], [-1,0], [0,-1]]
for d in direction:
x = i + d[0]
y = j + d[1]
if x>=0 and x<h and y>=0 and y<w and image[x][y]==ogColor and [x,y] not in mark: # 最后的条件防止回退陷入死循环
mark += [[x,y]] # 新加入当前的点
image[x][y] = newColor
image = self.dfs( image, x, y, ogColor, newColor, mark )
return image