class Solution
{
public:
vector<vector<int>> imageSmoother(vector<vector<int>>& M)
{
int rows = M.size();
int cols = M[0].size();
vector<vector<int>> result(rows,vector<int>(cols, 0));
for(int i = 0; i < rows; ++i)
{
for(int j = 0; j < cols; ++j)
{
int count = 1;
int sum = M[i][j];
if(i - 1 >= 0)
{
sum += M[i-1][j];
++count;
if(j - 1 >= 0)
{
sum += M[i-1][j-1];
++count;
}
if(j + 1 < cols)
{
sum += M[i-1][j+1];
++count;
}
}
if(i + 1 < rows)
{
sum += M[i+1][j];
++count;
if(j - 1 >= 0)
{
sum += M[i+1][j-1];
++count;
}
if(j + 1 < cols)
{
sum += M[i+1][j+1];
++count;
}
}
if(j - 1 >= 0)
{
sum += M[i][j-1];
++count;
}
if(j + 1 < cols)
{
sum += M[i][j+1];
++count;
}
result[i][j] = sum / count;
}
}
return result;
}
};
我的
class Solution {
public:
vector<vector<int>> imageSmoother(vector<vector<int>>& m) {
if(m.empty()) return m;
int row=m.size();
int col=m[0].size();
vector<vector<int>> ans(row,vector<int>(col,0));
int i,j;
if(row==1&&col==1)
{
ans=m;
}
else if(row==1&&col>1)
{
ans[0][0]=(m[0][0]+m[0][1])/2;
ans[0][col-1]=(m[0][col-1]+m[0][col-2])/2;
for(i=1;i<=col-2;i++) ans[0][i]=(m[0][i-1]+m[0][i]+m[0][i+1])/3;
}
else if(row>1&&col==1)
{
ans[0][0]=(m[0][0]+m[1][0])/2;
ans[row-1][0]=(m[row-1][0]+m[row-2][0])/2;
for(i=1;i<=row-2;i++) ans[i][0]=(m[i-1][0]+m[i][0]+m[i+1][0])/3;
}
else if(row>=2&&col>=2)
{
ans[0][0]=(m[0][0]+m[0][1]+m[1][0]+m[1][1])/4;
ans[row-1][0]=(m[row-1][0]+m[row-1][1]+m[row-2][0]+m[row-2][1])/4;
ans[row-1][col-1]=(m[row-1][col-1]+m[row-1][col-2]+m[row-2][col-1]+m[row-2][col-2])/4;
ans[0][col-1]=(m[0][col-1]+m[0][col-2]+m[1][col-1]+m[1][col-2])/4;
for(i=1;i<=row-2;i++)
{
ans[i][0]=(m[i-1][0]+m[i][0]+m[i+1][0]+m[i-1][1]+m[i][1]+m[i+1][1])/6;
ans[i][col-1]=(m[i-1][col-1]+m[i][col-1]+m[i+1][col-1]+m[i-1][col-2]+m[i][col-2]+m[i+1][col-2])/6;
}
for(i=1;i<=col-2;i++)
{
ans[0][i]=(m[0][i-1]+m[0][i]+m[0][i+1]+m[1][i-1]+m[1][i]+m[1][i+1])/6;
ans[row-1][i]=(m[row-1][i-1]+m[row-1][i]+m[row-1][i+1]+m[row-2][i-1]+m[row-2][i]+m[row-2][i+1])/6;
}
for(i=1;i<=row-2;i++)
{
for(j=1;j<=col-2;j++)
{
ans[i][j]=(m[i-1][j-1]+m[i-1][j]+m[i-1][j+1]+m[i][j-1]+m[i][j]+m[i][j+1]+m[i+1][j-1]+m[i+1][j]+m[i+1][j+1])/9;
}
}
}
return ans;
}
};