Сложность: easy
Дан целочисленный матрица img размером m x n, представляющая градации серого изображения. Верните изображение после применения сглаживания к каждой его ячейке.
Пример:
Input: img = [[1,1,1],[1,0,1],[1,1,1]]
Output: [[0,0,0],[0,0,0],[0,0,0]]
Explanation:
For the points (0,0), (0,2), (2,0), (2,2): floor(3/4) = floor(0.75) = 0
For the points (0,1), (1,0), (1,2), (2,1): floor(5/6) = floor(0.83333333) = 0
For the point (1,1): floor(8/9) = floor(0.88888889) = 0
👨💻 Алгоритм:
1⃣Инициализация:
Создайте новую матрицу такого же размера, чтобы сохранить результат сглаживания.
2⃣Обработка каждой ячейки:
Для каждой ячейки исходной матрицы найдите всех её соседей (включая саму ячейку).
Вычислите среднее значение этих ячеек и сохраните его в соответствующей ячейке результирующей матрицы.
3⃣Возврат результата:
Верните результирующую матрицу после применения сглаживания ко всем ячейкам.
😎 Решение:
class Solution {
func imageSmoother(_ img: [[Int]]) -> [[Int]] {
let m = img.count
let n = img[0].count
var result = Array(repeating: Array(repeating: 0, count: n), count: m)
for i in 0..<m {
for j in 0..<n {
var count = 0
var total = 0
for ni in max(0, i - 1)...min(m - 1, i + 1) {
for nj in max(0, j - 1)...min(n - 1, j + 1) {
total += img[ni][nj]
count += 1
}
}
result[i][j] = total / count
}
}
return result
}
}Ставь 👍 и забирай 📚 Базу знаний