题目链接 https://leetcode.com/problems/surface-area-of-3d-shapes/
题目大意
在一块N*N的区域上,我们放下一些1*1*1大小的方块, v = grid[i][j]
代表在坐标 (i, j)
上放置方块的数量为v,返回整个几何体的表面积
Example 1:
Input: [[2]] Output: 10
Example 2:
Input: [[1,2],[3,4]] Output: 34
Example 3:
Input: [[1,0],[0,2]] Output: 16
Example 4:
Input: [[1,1,1],[1,0,1],[1,1,1]] Output: 32
题目思路
先不考虑重叠部分的表面积,只计算每个坐标上方块的表面积之和,然后减去重叠面积即可,重叠面积为相邻坐标高度的较小值。
题目代码
int min(int a,int b)
{
return a<b ? a:b;
}
int surfaceArea(int** grid, int gridSize, int* gridColSize){
int res=0;
for(int i=0;i<gridSize;i++)
{
for(int j=0;j<gridSize;j++)
{
if(grid[i][j]>0)
res+=grid[i][j]*4+2;
if(i<gridSize-1)
res-=min(grid[i][j],grid[i+1][j])*2;
if(j<gridSize-1)
res-=min(grid[i][j],grid[i][j+1])*2;
}
}
return res;
}