对图像进行染色,一圈一圈的为周围点上***fs
其中需要注意给上同样颜色时,判断一下,直接输出.否则一直在循环中.
from collections import deque class Solution: def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int) -> List[List[int]]: queue=collections.deque() directions=[(0,1),(1,0),(-1,0),(0,-1)] queue.append((sr,sc)) target=image[sr][sc] if newColor==target: return image image[sr][sc]=newColor while queue: i,j=queue.popleft() print(queue) for di in directions: if 0<=i+di[0]<len(image) and 0<=j+di[1]<len(image[0]): if image[i+di[0]][j+di[1]]==target: image[i+di[0]][j+di[1]]=newColor queue.append((i+di[0],j+di[1])) return image
dfs
class Solution: def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int) -> List[List[int]]: directions=[(0,1),(1,0),(-1,0),(0,-1)] target=image[sr][sc] if target==newColor: return image image[sr][sc]=newColor def dfs(i,j): for di in directions: if 0<=i+di[0]<len(image) and 0<=j+di[1]<len(image[0]): if image[i+di[0]][j+di[1]]==target: image[i+di[0]][j+di[1]]=newColor dfs(i+di[0],j+di[1]) dfs(sr,sc) return image