Leetcode 733 Solution

This article provides solution to leetcode question 733 (flood-fill)

https://leetcode.com/problems/flood-fill

Solution

class Solution:
    def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int) -> List[List[int]]:
        m = len(image)
        n = len(image[0])

        q = [(sr, sc)]
        seen = {(sr, sc)}
        oldColor = image[sr][sc]
        image[sr][sc] = newColor

        while q:
            r, c = q.pop(0)

            if r > 0 and image[r - 1][c] == oldColor and (r - 1, c) not in seen:
                q.append((r - 1, c))
                seen.add((r - 1, c))
                image[r - 1][c] = newColor
            if r < m - 1 and image[r + 1][c] == oldColor and (r + 1, c) not in seen:
                q.append((r + 1, c))
                seen.add((r + 1, c))
                image[r + 1][c] = newColor
            if c > 0 and image[r][c - 1] == oldColor and (r, c - 1) not in seen:
                q.append((r, c - 1))
                seen.add((r, c - 1))
                image[r][c - 1] = newColor
            if c < n - 1 and image[r][c + 1] == oldColor and (r, c + 1) not in seen:
                q.append((r, c + 1))
                seen.add((r, c + 1))
                image[r][c + 1] = newColor

        return image