887. 三维形体投影面积

在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体。

每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。

现在,我们查看这些立方体在 xy、yz 和 zx 平面上的投影

投影就像影子,将三维形体映射到一个二维平面上。

在这里,从顶部、前面和侧面看立方体时,我们会看到“影子”。

返回所有三个投影的总面积。

示例 1:

输入:[[2]]
输出:5

示例 2:

输入:[[1,2],[3,4]]
输出:17
解释:
这里有该形体在三个轴对齐平面上的三个投影(“阴影部分”)。

示例 3:

输入:[[1,0],[0,2]]
输出:8

示例 4:

输入:[[1,1,1],[1,0,1],[1,1,1]]
输出:14

示例 5:

输入:[[2,2,2],[2,1,2],[2,2,2]]
输出:21

提示:

  • 1 <= grid.length = grid[0].length <= 50
  • 0 <= grid[i][j] <= 50

大致思路:

i表示x行,j表示y行,输入的gird[i][j]表示z

因此,

xy上的阴影:就是只要gird[i][j]不为0,就在xy上占一格

xz上的阴影:  表示不管y,取同一个x时(i)最高的那一列,意思是取每一行最大的数,然后加起来

yz上的阴影: 表示不管x,取同一个y时(j)最高的那一列,意思是取每一列最大的数,然后加起来

由于我对vector了解不多,所以这里的代码特别弱智,仅供参考

代码:

class Solution
{
public:int xy(vector<vector<int>>& grid){int xy=0; for(int i=0;i<grid.size();i++){for(int j=0;j<grid[i].size();j++){if(grid[i][j]!=0)xy++;}}return xy;}int maxz(vector<int>& vec){int max =0;for (auto v : vec) {if (max < v) max = v;}return max;
}int xz(vector<vector<int>>& grid){ int sum=0;for(int i=0;i<grid.size();i++){sum+=maxz(grid[i]);}return sum;}int yz(vector<vector<int>>& grid){int sum=0;int size=0; for(int i=0;i<grid.size();i++){if(grid[i].size()>size)size=grid[i].size();}int yzmax[size];for(int i=0;i<size;i++){   int maxi=0;for(int j=0;j<grid.size();j++){if(grid[j][i]!=NULL&&grid[j][i]>maxi){maxi=grid[j][i];}}sum+=maxi;}return sum;}int projectionArea(vector<vector<int>>& grid) {int sum;sum=xy(grid)+xz(grid)+yz(grid);return sum;}
};

大佬的代码(来自tonygsw)

class Solution {
public:int projectionArea(vector<vector<int>>& grid) {int hans=0,lans=0,rans=0;for(int i=0;i<grid.size();i++){int maxl=0;int maxr=0;for(int j=0;j<grid[i].size();j++){if(grid[i][j]>0)hans++;maxl=max(maxl,grid[i][j]);maxr=max(maxr,grid[j][i]);}lans+=maxl;rans+=maxr;}return lans+rans+hans;}
};

LeetCode 887. 三维形体投影面积相关推荐

  1. LeetCode 883. 三维形体投影面积(数学)

    文章目录 题目 方法:数学 题目 883. 三维形体投影面积 方法:数学 xyxyxy 平面的投影面积等于网格上非零数值的数目 yz\texttt{yz}yz 平面的投影面积等于网格上每一列最大数值之 ...

  2. LeetCode——883. 三维形体投影面积

    文章目录 题目描述 答案 我的答案 官方答案 数学 题目描述 在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值 v = grid[i ...

  3. leetcode 883. 三维形体投影面积(python)

    题目链接 题目描述: 在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j ...

  4. LeetCode 883 三维形体投影面积[数学] HERODING的LeetCode之路

    解题思路: 本次每日一题题目描述极其不清,其实就是对于n*n的物体,求其三个投影的面积和,也就是底面积(该位置是否有方块)+每行最高的和+每列最高的和,代码如下: class Solution {pu ...

  5. LeetCode刷题之883. 三维形体投影面积

    LeetCode刷题之883. 三维形体投影面积 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 在N*N的网格中,我们放置了一些与 ...

  6. #力扣LeetCode883. 三维形体投影面积 @FDDLC

    题目描述: 883. 三维形体投影面积 - 力扣(LeetCode) (leetcode-cn.com) Java代码: class Solution {public int projectionAr ...

  7. 力扣——883. 三维形体投影面积(Java、JavaScript、C实现)

    三维形体投影面积 在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 ( ...

  8. LeetCode 0883「三维形体投影面积」

    文章目录 题目 分析 实现 题目 在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值v = grid[i][j] 表示 v 个正方体叠 ...

  9. LeetCode(883)——三维形体投影面积(JavaScript)

    在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 现在,我们查看 ...

最新文章

  1. .net里鼠标选中的text数据怎么获取_Python数据科学实践 | 爬虫1
  2. lsof根据端口查进程
  3. 供应链金融服务平台:应收、预付和存货融资业务
  4. 面向对象三大特性之一:继承(C++)
  5. vant 做表格_Vant List 列表
  6. 2020年国家电网计算机类考纲,终于发布!详解2020届国家电网考试大纲,带你读懂考纲变化!...
  7. 详细js读取execl内容并展示
  8. linux-权限案例-文件与目录权限
  9. python读取多通道信号中的一个通道_RFID多通道读写器的具体应用
  10. 百度推出挖掘机自动驾驶技术:操作不输蓝翔
  11. qTip2 精致的jQuery提示信息插件
  12. javaweb项目图
  13. 如何根据一张照片判断出女孩住在几层楼?
  14. 某企业通达OA任意登录漏洞复现
  15. 巴蜀1471 魔兽争霸
  16. 关键词提取:TF-IDF和n-gram
  17. ps中如何批量修改图片
  18. XMLHttpRequest cannot load 的解决方法
  19. 坐标系旋转后的点坐标、坐标点旋转后的点坐标
  20. 浅析新媒体运营工作内容

热门文章

  1. 拆解AppleTV 4:三年磨一剑,苹果希望AppleTV成为智能家居的中心---ESM
  2. c#12星座速配代码_程序员12星座性格分析,猜猜哪个星座最适合IT行业?
  3. [AR/VR教程] SteamVR Unity工具包(二):激光和移动
  4. python安装random库_python 库安装方法及常用库
  5. python爬虫之下载京东页面图片
  6. 美团招聘视觉算法实习生
  7. 题破山寺后禅院-唐代诗人常建
  8. CSDN【精品专栏】第七期
  9. 金蝶kis记账王自定义账套选项的方法
  10. MATLAB feof和~feof函数用法