您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關golang中怎么利用leetcode實現顏色填充,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
顏色填充。編寫函數,實現許多圖片編輯軟件都支持的“顏色填充”功能。給定一個屏幕(以二維數組表示,元素為顏色值)、一個點和一個新的顏色值,將新顏色值填入這個點的周圍區域,直到原來的顏色值全都改變。
示例1:
輸入:
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]]
解釋:
在圖像的正中間,(坐標(sr,sc)=(1,1)),
在路徑上所有符合條件的像素點的顏色都被更改成2。
注意,右下角的像素沒有更改為2,
因為它不是在上下左右四個方向上與初始點相連的像素點。
說明:
image 和 image[0] 的長度在范圍 [1, 50] 內。
給出的初始點將滿足 0 <= sr < image.length 和 0 <= sc < image[0].length。
image[i][j] 和 newColor 表示的顏色值在范圍 [0, 65535]內。
解題思路:
1,一個點要不要填充除了檢查是否越界外,還需要檢查以下兩個條件
A,染色如果和原色相同不染色
B,染色如果和選點顏色不一樣不染色
2,如果滿足染色條件,染色當前點,并遞歸染色周圍點
3,這是一種深度優先的遍歷方法
代碼實現:
func floodFill(image [][]int, sr int, sc int, newColor int) [][]int {
dfs(image,sr,sc,image[sr][sc],newColor)
return image
}
func dfs(image [][]int, sr int, sc int,val, newColor int){
if sr<0 || sc<0||sr>=len(image) ||sc>=len(image[0]) ||image[sr][sc]==newColor || image[sr][sc]!=val{
return
}else{
image[sr][sc]=newColor
}
dfs(image,sr+1,sc,val,newColor)
dfs(image,sr,sc+1,val,newColor)
dfs(image,sr-1,sc,val,newColor)
dfs(image,sr,sc-1,val,newColor)
}
關于golang中怎么利用leetcode實現顏色填充就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。