算法笔记: 力扣#661 图片平滑器

问题描述


解法


分析

Python 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class :
def imageSmoother(self, M):
"""
:type M: List[List[int]]
:rtype: List[List[int]]
"""
m, n = len(M), len(M[0])
result = [[0]*n for _ in range(m)]
for r in range(m):
for c in range(n):
count = 0
for i in range(r-1, r+2):
for j in range(c-1, c+2):
if 0<=i<m and 0<=j<n:
result[r][c] += M[i][j]
count +=1
result[r][c] = result[r][c]//count
return result

Java 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class {
public int[][] imageSmoother(int[][] M) {
int m = M.length;
int n = M[0].length;
int[][] result = new int[m][n];
for(int r = 0; r < m; r++){
for(int c = 0; c < n; c++){
int count = 0;
for(int i = r-1; i < r+2; i++){
for(int j = c-1; j < c+2; j++){
if(i>=0 && i<m && j>=0 && j<n){
result[r][c] += M[i][j];
count++;
}
}
}
result[r][c] /= count;
}
}
return result;
}
}

时间复杂度

O(mn).

空间复杂度

O(mn).

链接


661. Image Smoother
661. 图片平滑器
(English version) Algorithm Notes: Leetcode#661 Image Smoother