思路和官网提供的一致
代码(粗糙,没有用到库里的函数,if else太多,暂时没有找到好的改进方法,因为方块是不是在边界必须得要去判断)
class Solution {
public:
int surfaceArea(vector<vector<int>>& grid) {
int result = 0;
int row = grid.size();
int col = grid[0].size();
for(int i =0; i < row; i++)
{
for(int j = 0; j < col; j++)
{
if(grid[i][j] != 0)
{
result += 2;
if(i - 1 >= 0)
{
result += (grid[i][j] > grid[i-1][j])?grid[i][j]-grid[i-1][j]:0;
}else
result += grid[i][j];
if(i + 1 < row)
{
result += (grid[i][j] > grid[i+1][j])?grid[i][j]-grid[i+1][j]:0;
}else
result += grid[i][j];
if(j - 1 >= 0)
{
result += (grid[i][j] > grid[i][j-1])?grid[i][j]-grid[i][j-1]:0;
}else
result += grid[i][j];
if(j + 1 < col)
{
result += (grid[i][j] > grid[i][j+1])?grid[i][j]-grid[i][j+1]:0;
}else
result += grid[i][j];
}
}
}
return result;
}
};