每日一題-Day33-影象渲染
阿新 • • 發佈:2021-11-22
BFS、DFS
題目
給定一個二維陣列,每個整數代表一個畫素值,現在給你一個座標(sr,sc)和一個新的顏色值newcolor,以座標為起點將上下左右的四個方向上的座標進行染色(畫素值相同),直到將所有滿足條件的染色完成
示例:
輸入:
image = [[1,1,1],[1,1,0],[1,0,1]]
sr = 1, sc = 1, newColor = 2
輸出: [[2,2,2],[2,2,0],[2,0,1]]
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/flood-fill
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解題思路
深度優先:採用遞迴的方式,將每個滿足條件的畫素點進行染色,重點在於理解往上下左右各走一步的概念
class Solution { public int[][] floodFill(int[][] image, int sr, int sc, int newColor) { helper(image, sr, sc, newColor, image[sr][sc]); return image; } void helper(int[][] image, int sr, int sc, int newColor, int oldColor) { if (sr < 0 || sc < 0 || sr >= image.length || sc >= image[0].length || image[sr][sc] != oldColor || newColor == oldColor){ return; } //對滿足的畫素點進行染色 image[sr][sc] = newColor; //往上下左右各走一步 helper(image, sr - 1, sc, newColor, oldColor); helper(image, sr + 1, sc, newColor, oldColor); helper(image, sr, sc - 1, newColor, oldColor); helper(image, sr, sc + 1, newColor, oldColor); } }
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/flood-fill/