홍수 채우기
m x n
정수 그리드image
로 표현되며 여기서 image[i][j]
는 이미지의 픽셀 값을 나타냅니다.또한
sr
, sc
및 newColor
세 개의 정수가 제공됩니다. 픽셀image[sr][sc]
에서 시작하여 이미지에 플러드 필을 수행해야 합니다.플러드 필을 수행하려면 시작 픽셀과 시작 픽셀과 동일한 색상의 시작 픽셀에 4방향으로 연결된 모든 픽셀과 해당 픽셀에 4방향으로 연결된 모든 픽셀(동일한 색상)을 고려하십시오. 곧. 앞서 언급한 모든 픽셀의 색상을
newColor
로 바꿉니다.플러드 필을 수행한 후 수정된 이미지를 반환합니다.
예 1:
입력: 이미지 = [[1,1,1],[1,1,0],[1,0,1]], sr = 1, sc = 1, newColor = 2
출력: [[2,2,2],[2,2,0],[2,0,1]]
설명: 위치가 (sr, sc) = (1, 1)(즉, 빨간색 픽셀)인 이미지의 중심에서 시작 픽셀(즉, 파란색 픽셀)과 동일한 색상의 경로로 연결된 모든 픽셀 새로운 색상으로 채색됩니다.
하단 모서리는 시작 픽셀에 4방향으로 연결되어 있지 않기 때문에 색상이 2가 아닙니다.
예 2:
입력: 이미지 = [[0,0,0],[0,0,0]], sr = 0, sc = 0, newColor = 2
출력: [[2,2,2],[2,2,2]]
제약:
m == image.length
n == image[i].length
1 <= m, n <= 50
0 <= image[i][j], newColor < 216
0 <= sr < m
0 <= sc < n
해결책:
class Solution:
def ff(self, image: List[List[int]], i, j, newColor: int, currColor) -> List[List[int]]:
m = len(image)
n = len(image[0])
if i >= 0 and j >= 0 and i < m and j < n and image[i][j] == currColor:
image[i][j] = newColor
self.ff(image, i - 1, j, newColor, currColor)
self.ff(image, i + 1, j, newColor, currColor)
self.ff(image, i, j - 1, newColor, currColor)
self.ff(image, i, j + 1, newColor, currColor)
def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int, currColor = None) -> List[List[int]]:
currColor = image[sr][sc]
if currColor != newColor:
self.ff(image, sr, sc, newColor, currColor)
return image
Reference
이 문제에 관하여(홍수 채우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/flood-fill-8lb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)