【力扣】661:圖片平滑器|數組

題目描述

包含整數的二維矩陣 M 表示一個圖片的灰度。你需要設計一個平滑器來讓每一個單元的灰度成爲平均灰度 (向下舍入) ,平均灰度的計算是周圍的8個單元和它本身的值求平均,如果周圍的單元格不足八個,則儘可能多的利用它們。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/image-smoother
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

算法思路

這裏有幾個點要注意

  1. 拷貝數組,dp=[[M[j][i] for i in range(n)]for j in range(m)]
  2. 平均灰度的計算是周圍的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%的用戶

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章