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; } };