Python中使用泛洪填充操作填充顏色的程式
假設我們有一個二維網格,其中包含顏色字串“r”、“g”和“b”。我們必須在行r、列c處使用顏色target執行泛洪填充操作。眾所周知,泛洪填充操作應將與grid[r,c]連線(上/右/下/左)且顏色與grid[r,c]相同的元素替換為與target相同的顏色。
因此,如果輸入如下所示:
| R | R | R |
| R | G | B |
| G | B | B |
那麼輸出將是
| G | G | G |
| G | G | B |
| G | B | B |
因為與grid[0,0]連線的紅色單元格被替換為綠色(“g”)。
為了解決這個問題,我們將遵循以下步驟:
- 定義一個新的集合seen
- oldcolor := matrix[r, c]
- 定義一個函式dfs()。這將需要i, j
- 如果i和j在矩陣中,並且(i, j)未被seen,並且matrix[i, j]與oldcolor相同,則
- 將(i, j)新增到seen
- matrix[i, j] := target
- dfs(i + 1, j)
- dfs(i, j + 1)
- dfs(i, j - 1)
- dfs(i - 1, j)
- 在主方法中,執行以下操作:
- dfs(r, c)
- return matrix
讓我們看看下面的實現,以便更好地理解:
示例
class Solution: def solve(self, matrix, r, c, target): def dfs(i, j): if ( i >= 0 and i < len(matrix) and j >= 0 and j < len(matrix[0]) and (i, j) not in seen and matrix[i][j] == oldcolor ): seen.add((i, j)) matrix[i][j] = target dfs(i + 1, j) dfs(i, j + 1) dfs(i, j - 1) dfs(i - 1, j) seen = set() oldcolor = matrix[r][c] dfs(r, c) return matrix ob = Solution() matrix = [ ["r", "r", "r"], ["r", "g", "b"], ["g", "b", "b"] ] r = 0 c = 0 target = "g" print(ob.solve(matrix, r, c, target))
輸入
matrix = [ ["r", "r", "r"], ["r", "g", "b"], ["g", "b", "b"] ] r = 0 c = 0 target = "g"
輸出
[ ['g', 'g', 'g'], ['g', 'g', 'b'], ['g', 'b', 'b']]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP