• Leetcode661.Image Smoother图片平滑器


    包含整数的二维矩阵 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<vector<int> > imageSmoother(vector<vector<int> >& M) {
            vector<vector<int> > res;
            int r = M.size();
            if(r == 0)
                return res;
            int c = M[0].size();
            for(int i = 0; i < r; i++)
            {
                vector<int> 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;
        }
    };
  • 相关阅读:
    2.2 Scala基础知识
    Linux---用户及权限管理类命令
    Linux---进程控制类命令
    Linux---vim编辑文本文件
    Linux---文件压缩与解压缩命令
    Linux---查找命令
    Linux---基本目录与文件命令
    nginx配置技巧汇总
    Go 内嵌静态资源
    go语言的time.Sleep
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10434032.html
Copyright © 2020-2023  润新知