• 每日leetcode-数组-661. 图片平滑器


    分类:数组-二维数组及滚动数组

    题目描述:

    包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。

    解题思路:

    遍历矩阵

    对于矩阵中的每一个单元格,找所有 9 个包括它自身在内的紧邻的格子。

    然后,我们要将所有邻居的和保存在 ans[r][c] 中,同时记录邻居的数目 count。最终的答案就是和除以邻居数目。

     1 class Solution:
     2     def imageSmoother(self, img: List[List[int]]) -> List[List[int]]:
     3         R,C=len(img),len(img[0])   #代表二维矩阵的行数和列数
     4         ans = [[0] *C for _ in img]   #生成二维矩阵大小的空数组,用来保存邻居的和
     5         for i in range(R): #对于二维矩阵的每一行遍历
     6             for j in range(C): #对于每一列
     7                 count = 0  #用来记录邻居的数目
     8                 for ni in (i-1,i,i+1):
     9                     for nj in (j-1,j,j+1):
    10                         if 0 <= ni < R and 0 <= nj < C:
    11                             ans[i][j] += img[ni][nj]
    12                             count +=1
    13                 ans[i][j] =  int(ans[i][j]/count)  #int是向下取整,ceil()是向上取整
    14         return ans

    复杂度分析

    • 时间复杂度:O(N)O(N),其中 NN 是图片中像素的数目。我们需要将每个像素都遍历一遍。

    • 空间复杂度:O(N)O(N),我们答案的大小。

  • 相关阅读:
    Java创建和解析Json对象
    Tyche 2191 WYF的递推式
    Tyche 2147 旅行
    Tyche 2317 Color
    洛谷 P1092 虫食算
    洛谷 P3951 小凯的疑惑
    BZOJ 1800 [Ahoi2009]fly 飞行棋
    BZOJ 1034 [ZJOI2008]泡泡堂BNB
    洛谷 P2151 [SDOI2009]HH去散步
    Android开发环境配置
  • 原文地址:https://www.cnblogs.com/LLLLgR/p/14775030.html
Copyright © 2020-2023  润新知