Leetcode733-图像渲染
思路:深度优先搜索。
从当前点分别向上、向下、向左、向右搜索,直到不满足条件(超出边界或者不等于初始设定的像素值)。不满足条件需往后退一步,比如:向上移动后不满足条件,则返回(向下回移一步),然后又向下试探。
如果当前点移动后的点满足条件(等于初始像素值且没有出界),则将该点涂色,以该点为中心,向上向下向左向右搜索,以此类推。
class Solution:
def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int) -> List[List[int]]:
value = image[sr][sc]
if value == newColor:
return image
def dfs(x, y):
if x in [-1, len(image)] or y in [-1, len(image[0])] or image[x][y] != value: #不满足条件:出界and不等于初始像素值。
return #后退
image[x][y] = newColor #为满足条件的像素点赋值
dfs(x - 1, y) # 上
dfs(x + 1, y) # 下
dfs(x, y - 1) # 左
dfs(x, y + 1) # 右
return image #返回二维数组
return dfs(sr,sc)