题目 题解 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; } }; 结果