对图像进行染色,一圈一圈的为周围点上***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