暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

力扣-661 图片平滑器

测试开发吃货 2021-09-06
272

▌题目

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

示例 1:

输入:
[[1,1,1],
[1,0,1],
[1,1,1]]
输出:
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]
解释: 对于点 (0,0), (0,2), (2,0), (2,2): 平均(3/4) = 平均(0.75) = 0
对于点 (0,1), (1,0), (1,2), (2,1): 平均(5/6) = 平均(0.83333333) = 0
对于点 (1,1): 平均(8/9) = 平均(0.88888889) = 0

来源:力扣(LeetCode) 

链接:https://leetcode-cn.com/problems/image-smoother/

▌解看到这题,想起了经典游戏,扫雷。区别是,扫雷的当前格显示的是周围格子中雷的数量,本题显示的是周围格子和自身求和后的平均值(向下取整)。

解题步骤:

  1. 初始化结果数组
  2. 遍历二维数组,找出当前数周围8个位置的数,计数并求和
  3. 求出地板除之后的值,填入结果数组对应位置
class Solution:
def imageSmoother(self, img: List[List[int]]) -> List[List[int]]:
row = len(img)
column = len(img[0])
res = [[0 for _ in range(column)] for _ in range(row)]
for r in range(row):
for c in range(column):
count = 0
for nr in (r-1, r, r+1):
for nc in (c-1, c, c+1):
if 0 <= nr < row and 0 <= nc < column:
res[r][c] += img[nr][nc]
count += 1
res[r][c] //= count

return res

复制


文章转载自测试开发吃货,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论