码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2021-05-24 13:19:23      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:整数   pen   and   ima   images   style   int   二维数组   空间复杂度   

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

题目描述:

包含整数的二维矩阵 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),我们答案的大小。

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

标签:整数   pen   and   ima   images   style   int   二维数组   空间复杂度   

原文地址:https://www.cnblogs.com/LLLLgR/p/14775030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!