面試題 08 10 顏色填充(dfs)

2022-07-13 05:39:10 字數 1204 閱讀 6828

編寫函式,實現許多編輯軟體都支援的「顏色填充」功能。

待填充的影象用二維陣列 image 表示,元素為初始顏色值。初始座標點的橫座標為 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]]

解釋:

初始座標點位於影象的正中間,座標 (sr,sc)=(1,1) 。

初始座標點周圍區域上所有符合條件的畫素點的顏色都被更改成 2。

注意,右下角的畫素沒有更改為 2 ,因為它不屬於初始座標點的周圍區域。

這道題是屬於用dfs結題的簡單題吧。首先我們是可以很容易想到的,需要通過在中間點上下左右搜尋並塗色,那麼很重要的就是:(1)dfs結束條件 (2)對原來的陣列的更改。

(1)dfs結束條件:當然是超出陣列邊界的時候

(2)對原來陣列的更改,那麼這個原來陣列要作為全域性變數

class

solution:

def floodfill(self, image: list[list[int]], sr: int, sc: int, newcolor: int) ->list[list[int]]:

a =image[sr][sc]

row =len(image)

col =len(image[0])

if a==newcolor:

return

image

defdfs(sr, sc):

ifnot 0 <= sr or

not 0 <= sc or image[sr][sc] !=a:

#if sr <0 or sc <0 or sr > len(image) or sc > len(image[0]):

return

image[sr][sc] =newcolor

dfs(sr-1, sc)

dfs(sr, sc-1)

dfs(sr, sc + 1)

dfs(sr + 1, sc)

dfs(sr,sc)

return image

刷題 力扣 面試題 08 10 顏色填充

題目鏈結 題目描述 編寫函式,實現許多編輯軟體都支援的 顏色填充 功能。待填充的影象用二維陣列 image 表示,元素為初始顏色值。初始座標點的行座標為 sr 列座標為 sc。需要填充的新顏色為 newcolor 周圍區域 是指顏色相同且在上 下 左 右四個方向上存在相連情況的若干元素。請用新顏色填...

dfs 填充顏色

由數字00組成的方陣中,有一任意形狀閉合圈,閉合圈由數字11構成,圍圈時只走上下左右44個方向。現要求把閉合圈內的所有空間都填寫成22.例如 6 times 66 6的方陣 n 6n 6 塗色前和塗色後的方陣如下 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 2 2 1 1 1 2 2...

DFS 填充顏色

題目描述 由數字00組成的方陣中,有一任意形狀閉合圈,閉合圈由數字11構成,圍圈時只走上下左右44個方向。現要求把閉合圈內的所有空間都填寫成22.例如 6 times 66 6的方陣 n 6n 6 塗色前和塗色後的方陣如下 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 ...