解题思路:
1.两层遍历获得当前元素的位置
2.再利用两层循环m和n,m的范围从i-1到i+1,n从j-1到j+1
如果m和n的范围在0~rows-1和0~cols-1,则累加到和中,同时计数器加1
3.m和n遍历结束后,对和求平均
代码实现:
class Solution {
public int[][] imageSmoother(int[][] M) {
int rows=M.length;//行
int cols=M[0].length;//列
int[][] res=new int[rows][cols];
for(int i=0;i<rows;++i){
for(int j=0;j<cols;++j){
int cnt=0;//周围加上本身数的个数
for(int m=i-1;m<=i+1;++m){
for(int n=j-1;n<=j+1;++n){
if(m>=0&&m<rows&&n>=0&&n<cols){
res[i][j]+=M[m][n];
cnt++;
}
}
}
res[i][j]/=cnt;
}
}
return res;
}
}