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;
}
结果:

本文详细介绍了如何解决883题——三维形体投影面积的问题。通过从顶部、侧面和正面三个视角分析,计算网格中非零值数量、每一行最大值和每一列最大值来求解。代码实现清晰,解释了每个部分的逻辑,帮助理解投影面积的计算方法。
460

被折叠的 条评论
为什么被折叠?



