Every day a leetcode
题目来源:883. 三维形体投影面积
解法1:模拟
我们从三个视角看:
-
从顶部看,由该形状生成的阴影将是网格中非零值的数目。
-
从侧面看,由该形状生成的阴影将是网格中每一行的最大值。
-
从正面看,由该形状生成的阴影将是网格中每一列的最大值。
代码:
int projectionArea(int** grid, int gridSize, int* gridColSize){
int m=gridSize;
int n=*gridColSize;
int xy=m*n;
int xz=0;
int yz=0;
for(int i=0;i<m;i++)
{
int xMax=grid[i][0];
for(int j=0;j<n;j++)
{
if(grid[i][j] == 0) xy--;
if(grid[i][j]>xMax) xMax=grid[i][j];
}
xz+=xMax;
}
for(int i=0;i<n;i++)
{
int yMax=grid[0][i];
for(int j=0;j<m;j++)
{
if(grid[j][i]>yMax) yMax=grid[j][i];
}
yz+=yMax;
}
return xy+xz+yz;
}
结果: