LeetCode之0661, 二维向量初始化

img[i][j]周围的单元格,img[i+i1][j+j1], i1=-1,0,1, j1=-1,0,1, 每个都判断一次。O(9*m*n)

class Solution {
public:
    std::vector<std::vector<int>> imageSmoother(
      std::vector<std::vector<int>>& img) {
    int m = img.size();
    int n = img[0].size();

    std::vector<std::vector<int>> ret(m, std::vector<int>(n, 0));
    int count, s;
    for (int i = 0; i < m; ++i) {
      for (int j = 0; j < n; ++j) {
        s = 0;
        count = 0;
        for (int i1 = -1; i1 < 2; ++i1) {
          for (int j1 = -1; j1 < 2; ++j1) {
            if (i + i1 >= 0 && i + i1 < m && j + j1 >= 0 && j + j1 < n) {
              ++count;
              s += img[i + i1][j + j1];
            }
          }
        }
        ret[i][j] = s / count;
        //std::cout << "img[" << i << "][" << j << "]=" << ret[i][j] << std::endl;
      }
    }
    return ret;
  }
};

 

posted @ 2023-07-20 00:54  安然春夏  阅读(32)  评论(0)    收藏  举报