当前位置: 首页 > 后端技术 > PHP

LeetcodePHP题解--D17883.3DShapes的ProjectionArea

时间:2023-03-29 14:22:47 PHP

883。ProjectionAreaof??3DShapes题目链接883.ProjectionAreaof??3DShapes题目解析本题目需要计算三维直方图的“表面积”。当输入为[[1,2],[3,4]]时如图。底面是2+2=4,这个不用多说;从x平面看,左边前柱的高度为1,后柱的高度为2,所以这一排的高度为2,右边的柱子的高度为4。因此,2+4=6;从y平面后方往x缩小的方向看时(图中从右上向左下看时),前柱挡住了后柱,所以3+4=7;最后的结果是4+6+7=17。思路从题目分析可知,每边每一行(或每一列)的最大值可以相加。传入的是一个二维数组。当x固定时:二维数组的第一个元素表示x=1时z的值(y轴的间隔为1);第二个元素代表x=2时z的值。那么我们先遍历x=1时的情况。很明显,用max函数取$grid[$i]的最大值2,得到z轴上的最大值。当值为0时,没有柱子,底面也不会形成阴影。因此$grid[$i]中非零元素个数的计算就是柱子在底面上的投影。底部的z平面已经解决了(从左上往右下看),然后y轴(从左下往右上看)就剩下了。计算二维数组每个元素中相同位置的值的最大值。(这个好像很难描述)取A[i][0]的最大值遍历即可。最终代码$c){$total+=max(array_column($grid,$k));}foreach($gridas$key=>$coord){$total+=max($coord);$total+=count(array_filter($coord));}返回$总计;}}如果您觉得本文对您有用,请用[爱发电](https://afdian.net/@skys215)支持一下