Leetcode 661 Solution
This article provides solution to leetcode question 661 (image-smoother)
Access this page by simply typing in "lcs 661" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/image-smoother
Solution
class Solution {
public:
int get_value(const vector<vector<int>>& M, int i, int j, int m, int n, int& cnt)
{
if (0 <= i && i < m && 0 <= j && j < n)
{
cnt += 1;
return M[i][j];
}
return 0;
}
vector<vector<int>> imageSmoother(vector<vector<int>>& M) {
int m = M.size();
if (m == 0)
return M;
int n = M[0].size();
vector<vector<int>> res(m, vector<int>(n, 0));
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
int sum = 0;
int cnt = 0;
sum += this->get_value(M, i, j, m, n, cnt);
sum += this->get_value(M, i - 1, j, m, n, cnt);
sum += this->get_value(M, i + 1, j, m, n, cnt);
sum += this->get_value(M, i, j - 1, m, n, cnt);
sum += this->get_value(M, i, j + 1, m, n, cnt);
sum += this->get_value(M, i - 1, j - 1, m, n, cnt);
sum += this->get_value(M, i - 1, j + 1, m, n, cnt);
sum += this->get_value(M, i + 1, j - 1, m, n, cnt);
sum += this->get_value(M, i + 1, j + 1, m, n, cnt);
res[i][j] = floor(sum * 1.0 / cnt);
}
}
return res;
}
};