Leetcode 矩阵算法练习题 矩阵求平均

最近在Leetcode上练习一些题目

大致意思就是求一个矩阵的平均值

尽可能的对周围8个值求和加本身最后取平均

输入:M[][] = {{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.833333=0

对于(1,1) 结果是8/9 = 0.8888888=0

附上代码,不用客气!!!xixi
    vector<vector<int>> imageSmoother(vector<vector<int>>& M) {
        vector<vector<int>> arr;
        vector<int> tmp;
        
        int iFm = 0;//分母
        int iFz = 0;//分子
        int iret = 0;//结果
        for(int i=0;i<M.size();++i)
        {
            iFm = 0;
            iFz = 0;
            tmp.clear();
            for(int j=0;j<M[0].size();++j)
            {
                if(i-1>=0 && j-1>=0)
                {
                    iFm++;//左上
                    iFz += M[i-1][j-1];
                }
                if(i-1>=0 && j+1<=M[0].size()-1)
                {
                    iFm++;//右上
                    iFz += M[i-1][j+1];
                }
                if(i-1>=0)
                {
                    iFm++;//上面
                    iFz += M[i-1][j];
                }
                
                if(j-1>=0)
                {
                    iFm++;//左边
                    iFz += M[i][j-1];
                }
                if(j+1<=M[0].size()-1)
                {
                    iFm++;//右边
                    iFz += M[i][j+1];
                }
                iFm++;//本身
                iFz += M[i][j];
                
                if(i+1<=M.size()-1 && j-1>=0)
                {
                    iFm++;//左下
                    iFz += M[i+1][j-1];
                }
                if(i+1<=M.size()-1 && j+1<=M[0].size()-1)
                {
                    iFm++;//右下
                    iFz += M[i+1][j+1];
                }
                if(i+1<=M.size()-1)
                {
                    iFm++;//下面
                    iFz += M[i+1][j];
                }
                tmp.push_back((int)(iFz/iFm));
            }
            arr.push_back(tmp);
        }
        return arr;
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小的程序员_one

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值