题目
包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/image-smoother
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
遍历二位数组的每个单元格,确定周围一圈单元格的位置范围,如果没有越界,则累加。最后求平均值。
代码
class Solution {
public int[][] imageSmoother(int[][] M) {
int[][] result = new int[M.length][M[0].length];
for (int i = 0; i < M.length; i++) {
for (int j = 0; j < M[0].length; j++) {
int n = 0;
int m = 0;
for (int k = i - 1; k <= i + 1; k++) {
for (int l = j - 1; l <= j + 1; l++) {
if (k >= 0 && k < M.length && l >= 0 && l < M[0].length) {
m += M[k][l];
n++;
}
}
}
result[i][j] = m / n;
}
}
return result;
}
}