思路,1、先确定所有坐标点的上下边界(是有空余还是就是坐标点本身)
2、再遍历每个点,计算平均值
class Solution {
public:
vector<vector<int>> imageSmoother(vector<vector<int>>& M) {
int r=M.size(),c=M.back().size();
vector<vector<int>> res(r,vector<int>(c,-1));
for(int i=0;i<r*c;i++){
int cur_r=i/c;
int cur_c=i%c;
int x1=cur_c,x2=cur_c,y1=cur_r,y2=cur_r,sum=0;
if(cur_c-1>=0)x1=cur_c-1;//左限
if(cur_c+1<c)x2=cur_c+1;//右限
if(cur_r-1>=0)y1=cur_r-1;//上限
if(cur_r+1<r)y2=cur_r+1;//下限
for(int i=y1;i<=y2;i++){//遍历求和
for(int j=x1;j<=x2;j++){
sum+=M[i][j];
}
}
int count=(y2-y1+1)*(x2-x1+1);
res[cur_r][cur_c]=sum/count;
}
return res;
}
作者:ooolize-2
链接:https://leetcode-cn.com/problems/image-smoother/solution/100-zhao-dao-shang-xia-xian-yu-zuo-you-xian-by-ooo/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。