一、题目
二、思路(自己)
- 题目给出的过滤器是3*3的,但是对于图像的大小,我们是不能确定的。只需要考虑边缘的特殊情况,其余则是统一处理。
- 如果我所有的同一考虑:价格判断条件(该元素上一行和下一行是否存在,该元素前一列和后一列是否存在),根据判断情况不同来处理
- 我要放在两个for循坏里遍历,感觉时间复杂度有点高了,先写一下看能否通过编译吧
- 不考虑极端情况,第一行的元素、最后一行的元素、第一列的元素、最后一列的元素少加一段
class Solution {
public int[][] imageSmoother(int[][] img) {
int m=img.length,n=img[0].length;
int res[][]=new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
int num=0,sum=0;
for (int k =i-1; k <=i+1; k++) {
for (int l = j-1; l <=j+1; l++) {
if(k>=0&&k<m&&l>=0&&l<n){
num++;
sum+=img[k][l];
}
}
}
res[i][j]=sum/num;
}
}
return res;
}
}
三、题解(官方)
官方解答思路差不多,就不贴了。