s4553711
8/28/2017 - 2:38 PM

661.cpp

class Solution {
public:
    vector<vector<int>> imageSmoother(vector<vector<int>>& M) {
        int r = M.size(), c = M[0].size();
        vector<vector<int> > ans (r, vector<int>(c));
        for(int i = 0; i < r; i++) {
            for(int j = 0; j < c; j++) {
                ans[i][j] = find(M, i, j);
            }
        }
        return ans;
    }
    
    int find(vector<vector<int>>& M, int x, int y) {
        int dx[9] = {0,0,1,1,1,0,-1,-1,-1};
        int dy[9] ={0,-1,-1,0,1,1,1,0,-1};
        int r = M.size(), c = M[0].size();
        int sum = 0, n = 0;
        for(int i = 0; i < 9; i++) {
            int xi = x + dx[i];
            int yi = y + dy[i];
            if (xi >= 0 && xi < r && yi >= 0 && yi < c) {
                sum += M[xi][yi];
                n++;
            }
        }
        return sum/n;
    }
};