這篇文章將為大家詳細(xì)講解有關(guān)golang中怎么利用leetcode實(shí)現(xiàn)顏色填充,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)是一家專業(yè)提供秦皇島企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務(wù)。10年已為秦皇島眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
顏色填充。編寫函數(shù),實(shí)現(xiàn)許多圖片編輯軟件都支持的“顏色填充”功能。給定一個(gè)屏幕(以二維數(shù)組表示,元素為顏色值)、一個(gè)點(diǎn)和一個(gè)新的顏色值,將新顏色值填入這個(gè)點(diǎn)的周圍區(qū)域,直到原來的顏色值全都改變。
示例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]]
解釋:
在圖像的正中間,(坐標(biāo)(sr,sc)=(1,1)),
在路徑上所有符合條件的像素點(diǎn)的顏色都被更改成2。
注意,右下角的像素沒有更改為2,
因?yàn)樗皇窃谏舷伦笥宜膫€(gè)方向上與初始點(diǎn)相連的像素點(diǎn)。
說明:
image 和 image[0] 的長(zhǎng)度在范圍 [1, 50] 內(nèi)。
給出的初始點(diǎn)將滿足 0 <= sr < image.length 和 0 <= sc < image[0].length。
image[i][j] 和 newColor 表示的顏色值在范圍 [0, 65535]內(nèi)。
解題思路:
1,一個(gè)點(diǎn)要不要填充除了檢查是否越界外,還需要檢查以下兩個(gè)條件
A,染色如果和原色相同不染色
B,染色如果和選點(diǎn)顏色不一樣不染色
2,如果滿足染色條件,染色當(dāng)前點(diǎn),并遞歸染色周圍點(diǎn)
3,這是一種深度優(yōu)先的遍歷方法
代碼實(shí)現(xiàn):
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)
}
關(guān)于golang中怎么利用leetcode實(shí)現(xiàn)顏色填充就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。