leetcode-661:图片平滑器

简介: leetcode-661:图片平滑器

题目

题目链接

图像平滑器 是大小为 3 x 3 的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度

每个单元格的 平均灰度 定义为:该单元格自身及其周围的 8 个单元格的平均值,结果需向下取整。(即,需要计算蓝色平滑器中 9 个单元格的平均值)。

如果一个单元格周围存在单元格缺失的情况,则计算平均灰度时不考虑缺失的单元格(即,需要计算红色平滑器中 4 个单元格的平均值)。

给你一个表示图像灰度的 m x n 整数矩阵 img ,返回对图像的每个单元格平滑处理后的图像 。

示例 1:

输入:img = [[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

示例 2:

输入: img = [[100,200,100],[200,50,200],[100,200,100]]
输出: [[137,141,137],[141,138,141],[137,141,137]]
解释:
对于点 (0,0), (0,2), (2,0), (2,2): floor((100+200+200+50)/4) = floor(137.5) = 137
对于点 (0,1), (1,0), (1,2), (2,1): floor((200+200+50+200+100+100)/6) = floor(141.666667) = 141
对于点 (1,1): floor((50+200+200+200+200+100+100+100+100)/9) = floor(138.888889) = 138

解题

方法一:模拟

class Solution {
public:
    int m;
    int n;
    int dirs[3]={-1,0,1};
    vector<vector<int>> imageSmoother(vector<vector<int>>& img) {
        m=img.size();
        n=img[0].size();
        vector<vector<int>> dst(m,vector<int>(n));
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                dst[i][j]=getMean(i,j,img);
            }
        }
        return dst;
    }
    int getMean(int x,int y,vector<vector<int>>& img){
        int sum=0;
        int count=0;
        for(int i:dirs){
            for(int j:dirs){
                int nx=x+i;
                int ny=y+j;
                if(nx>=0&&nx<m&&ny>=0&&ny<n){
                    sum+=img[nx][ny];
                    count++;
                }
            }
        }
        return sum/count; 
    }
};


相关文章
|
前端开发 应用服务中间件 持续交付
Dokcer + nginx + Gitee Go 实现一键化部署你的项目(保姆级别)
Dokcer + nginx + Gitee Go 实现一键化部署你的项目(保姆级别)
518 0
|
数据采集 数据可视化 Python
在Python中进行数据清洗和预处理缺失值处理查看缺失值比例
在Python中进行数据清洗和预处理缺失值处理查看缺失值比例
279 5
|
存储 缓存 监控
一文读懂分布式架构知识体系(内含超全核心知识大图)
7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!马上投递简历:https://developer.aliyun.com/special/offerday01
19370 0
|
6月前
|
人工智能 自然语言处理 搜索推荐
马斯克AI Grok 3 国内如何使用?请收下这篇新手指南!
Grok AI,由埃隆·马斯克(Elon Musk)旗下的人工智能初创公司 xAI 于 2023 年 11 月推出,迅速成为 AI 领域的一颗耀眼新星
2407 80
|
存储 弹性计算 监控
阿里云ECS健康状态产品详解
详细介绍阿里云ECS健康状态的功能和使用案例
|
JavaScript 前端开发 Java
通过Gtest访问C++静态、私有、保护变量和方法
通过Gtest访问C++静态、私有、保护变量和方法
288 0
|
存储 小程序 索引
小程序跨页面传递参数的几种方式
小程序跨页面传递参数的几种方式
671 0
|
前端开发
太惊艳了,这些都是html&CSS的杰作!
太惊艳了,这些都是html&CSS的杰作!
|
PHP 数据库
phpmyadmin导入数据库大小限制修改
phpmyadmin默认导入数据库文件大小为2M,但一般网站的数据库导出的文件都会超出这个限制,要导入超过2M的数据库文件就需要手动修改php.ini配置文件! 在php.ini文件中修改: upload_max_filesize  20m(即允许上传文件大小的最大值,默认为2M,修改值大小自定) 修改完后,再刷新phpmyadin导入数据库页面会发现,导入数据库大小限制会显示成“(最大限制:8,192 KB)”而不是手动设置的20m。
2155 0
【数据结构】双向链表中删除节点的方法实现(代码+详解)
【数据结构】双向链表中删除节点的方法实现(代码+详解)
534 0