題目描述
包含整數的二維矩陣 M 表示一個圖片的灰度。你需要設計一個平滑器來讓每一個單元的灰度成爲平均灰度 (向下舍入) ,平均灰度的計算是周圍的8個單元和它本身的值求平均,如果周圍的單元格不足八個,則儘可能多的利用它們。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/image-smoother
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
算法思路
這裏有幾個點要注意
- 拷貝數組,
dp=[[M[j][i] for i in range(n)]for j in range(m)]
- 平均灰度的計算是周圍的8個單元和它本身的值求平均
class Solution:
def imageSmoother(self, M: List[List[int]]) -> List[List[int]]:
m,n=len(M),len(M[0])
dire=[(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)]
dp=[[M[j][i] for i in range(n)]for j in range(m)]
for i in range(m):
for j in range(n):
jsq=1
res=M[i][j]
for k in dire:
i_n,j_n=i+k[0],j+k[1]
if 0<=i_n<m and 0<=j_n<n:
jsq+=1
res+=M[i_n][j_n]
dp[i][j]=res//jsq
return dp
執行用時 :696 ms, 在所有 Python3 提交中擊敗了86.89%的用戶
內存消耗 :14 MB, 在所有 Python3 提交中擊敗了33.33%的用戶