661. 图片平滑器

  1. [题目链接](661. 图片平滑器 - 力扣(LeetCode))

  2. 解题思路

    • 题目不难,关键是怎么写得【优雅】
    • 一般这种枚举的题,我们可以定义一个【方向】数组,然后直接for循环遍历这个【方向】数组,代码会更优雅,直接看代码
  3. 代码

    class Solution {
    public:
    vector<vector<int>> imageSmoother(vector<vector<int>>& img) {
    int m = img.size();
    int n = img[0].size();
    // 这个就是【方向】数组
    vector<vector<int>> dir{{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 0}, {0, 1}, {1, -1}, {1, 0}, {1, 1}};
    vector<vector<int>> ans(m, vector<int>(n, 0));
    for (int i = 0; i < m; ++i) {
    for (int j = 0; j < n; ++j) {
    int cur = 0;
    int valid = 0;
    for (int k = 0; k < 9; ++k) {
    int next_i = i + dir[k][0];
    int next_j = j + dir[k][1];
    if (next_i < m && next_i >= 0 && next_j < n && next_j >= 0) {
    cur += img[next_i][next_j];
    valid++;
    }
    }
    ans[i][j] = cur / valid;
    }
    }
    return ans;
    }
    };
posted @   ouyangxx  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示