资讯专栏INFORMATION COLUMN

Leetcode PHP题解--D17 883. Projection Area of 3D Sha

CarterLi / 462人阅读

摘要:思路从题目解析可以得知,每一面每一行或每一列取最大值相加即可。传进来的是一个二维数组。固定时二维数组的第个元素代表时,的值轴的间隔为第个元素代表时,的值。计算二维数组每一个元素中,相同位置的值的最高值即可。

883. Projection Area of 3D Shapes 题目链接

883. Projection Area of 3D Shapes

题目分析

这个题目要求计算一个三维柱状图的“表面积”。

当输入为[[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固定时:二维数组的第1个元素代表x=1时,z的值(y轴的间隔为1);第2个元素代表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($grid as $key => $coord){
                                                            $total += max($coord);
                                                                        $total += count(array_filter($coord));
                                                                                }
                                                                                        return $total;
                                                                                            }
                                                                                            }
                                                                                        
                                                                                        若觉得本文章对你有用,欢迎用[爱发电](https://afdian.net/@skys215)资助。
                                                                                        
                                                                                        
                                                                                        
                                                                                        

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31106.html

相关文章

  • Leetcode PHP题解--D65 892. Surface Area of 3D Shapes

    摘要:题目链接题目分析给定一个三维数组,返回所行程柱状体的表面积。思路三维数组中,的值表示在该点上柱状体的高度。当相邻位置有方块时,需要减去相应表面积。但只减去两个柱体中,较矮的柱体的高度。要记住,在两个方向上都需要做该判断。 D65 892. Surface Area of 3D Shapes 题目链接 892. Surface Area of 3D Shapes 题目分析 给定一个三维数...

    Joonas 评论0 收藏0
  • Leetcode PHP题解--D77 812. Largest Triangle Area

    摘要:题目链接题目分析给定一组坐标,返回能组成面积最大的三角形面积。思路只能套循环了。利用三边求面积公式得面积。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D77 812. Largest Triangle Area 题目链接 812. Largest Triangle Area 题目分析 给定一组坐标,返回能组成面积最大的三角形面积。 思路 只能套for循环了。利用三边求面积公式得面...

    SimonMa 评论0 收藏0
  • Leetcode PHP题解--D6 595. Big Countries

    摘要:题目链接题目分析这道题是个题。要求返回国土面积大于万平方公里或者人口多于万人的国家的名称人口面积。思路国土面积大于万平方公里人口多于万人返回名称人口面积最终代码若觉得本文章对你有用,欢迎用爱发电资助。 595. Big Countries 题目链接 595. Big Countries 题目分析 这道题是个SQL题。 要求返回国土面积大于300万平方公里或者人口多于2500万人的国家的...

    asce1885 评论0 收藏0
  • Leetcode PHP题解--D84 371. Sum of Two Integers

    摘要:题目链接题目分析相加给定的两个数,但不能使用或运算符。思路可以用二进制的与运算完成。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D84 371. Sum of Two Integers 题目链接 371. Sum of Two Integers 题目分析 相加给定的两个数,但不能使用+或-运算符。 思路 可以用二进制的与运算完成。此处用array_sum完成。 最终代码

    AJie 评论0 收藏0
  • Leetcode PHP题解--D72 349. Intersection of Two Array

    摘要:题目链接题目分析返回给定两个数组的交集。思路这既然不是自己实现的话,直接用就完事了。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D72 349. Intersection of Two Arrays 题目链接 349. Intersection of Two Arrays 题目分析 返回给定两个数组的交集。 思路 这既然不是自己实现的话,直接用array_intersect就完事...

    sixleaves 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<