每日leetcode-数组-661. 图片平滑器
2021-05-29 01:01
标签:整数 pen and ima images style int 二维数组 空间复杂度 分类:数组-二维数组及滚动数组 题目描述: 包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。 解题思路: 遍历矩阵 对于矩阵中的每一个单元格,找所有 9 个包括它自身在内的紧邻的格子。 然后,我们要将所有邻居的和保存在 ans[r][c] 中,同时记录邻居的数目 count。最终的答案就是和除以邻居数目。 复杂度分析 时间复杂度: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 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 and 0 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
文章标题:每日leetcode-数组-661. 图片平滑器
文章链接:http://soscw.com/index.php/essay/88876.html