博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode661.Image Smoother图片平滑器
阅读量:4611 次
发布时间:2019-06-09

本文共 1373 字,大约阅读时间需要 4 分钟。

包含整数的二维矩阵 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

注意:

  1. 给定矩阵中的整数范围为 [0, 255]。
  2. 矩阵的长和宽的范围均为 [1, 150]。

 

class Solution {public:    vector
> imageSmoother(vector
>& M) { vector
> res; int r = M.size(); if(r == 0) return res; int c = M[0].size(); for(int i = 0; i < r; i++) { vector
temp; for(int j = 0; j < c; j++) { int cnt = 1; int sum = M[i][j]; if(i - 1 >= 0 && j - 1 >= 0) { cnt++; sum += M[i - 1][j - 1]; } if(i - 1 >= 0 && j >= 0) { cnt++; sum += M[i - 1][j]; } if(i >= 0 && j - 1 >= 0) { cnt++; sum += M[i][j - 1]; } if(i + 1 < r && j + 1 < c) { cnt++; sum += M[i + 1][j + 1]; } if(i + 1 < r && j < c) { cnt++; sum += M[i + 1][j]; } if(i < r && j + 1 < c) { cnt++; sum += M[i][j + 1]; } if(i + 1 < r && j - 1 >= 0) { cnt++; sum += M[i + 1][j - 1]; } if(i - 1 >= 0 && j + 1 < c) { cnt++; sum += M[i - 1][j + 1]; } temp.push_back(sum / cnt); } res.push_back(temp); } return res; }};

 

转载于:https://www.cnblogs.com/lMonster81/p/10434032.html

你可能感兴趣的文章
java23种设计模式
查看>>
冲刺周期一--站立会议04
查看>>
支持IE6以上阴影效果纯CSS
查看>>
优化算法与特征缩放
查看>>
NOIP模板复习(4)区间操作之莫队算法,树状数组,线段树
查看>>
git warning: LF will be replaced by CRLF in 解决办法
查看>>
浅谈MVP设计模式
查看>>
深入理解PHP中的引用和赋值
查看>>
红黑树
查看>>
(转载)maven profile多环境自动切换配置
查看>>
py三个面试小问题
查看>>
图像类推效果图
查看>>
php pdo_mysql使用方法
查看>>
Android驱动开发第二章随想
查看>>
String API
查看>>
O(1)纬度减少循环次数
查看>>
绑定域名到 GitHub Pages
查看>>
javaweb-简单的验证码和算术验证码
查看>>
深入理解Javascript系列之类型
查看>>
DateTime数据类型保存问题(DateTime2)
查看>>