题目

题解
class Solution {
public:
int surfaceArea(vector<vector<int>>& grid) {
int m = grid.size();
if(!m) return 0;
int n = grid[0].size();
int sum = 0;
for(int i=0;i<m;++i){
for(int j=0;j<n;++j){
if(!grid[i][j]) continue;
if(i == 0) sum +=grid[i][j];
else sum += grid[i][j] > grid[i-1][j] ? grid[i][j] - grid[i-1][j] : 0;
if(j==0) sum+= grid[i][j];
else sum += grid[i][j] > grid[i][j-1] ? grid[i][j] - grid[i][j-1] : 0;
if(i == m-1) sum +=grid[i][j];
else sum += grid[i][j] > grid[i+1][j] ? grid[i][j] - grid[i+1][j] : 0;
if(j == n-1) sum+= grid[i][j];
else sum += grid[i][j] > grid[i][j+1] ? grid[i][j] - grid[i][j+1] : 0;
++sum;
++sum;
}
}
return sum;
}
};
结果
