LeetCode 887. 三维形体投影面积
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. 三维形体投影面积相关推荐
- LeetCode 883. 三维形体投影面积(数学)
文章目录 题目 方法:数学 题目 883. 三维形体投影面积 方法:数学 xyxyxy 平面的投影面积等于网格上非零数值的数目 yz\texttt{yz}yz 平面的投影面积等于网格上每一列最大数值之 ...
- LeetCode——883. 三维形体投影面积
文章目录 题目描述 答案 我的答案 官方答案 数学 题目描述 在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值 v = grid[i ...
- leetcode 883. 三维形体投影面积(python)
题目链接 题目描述: 在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j ...
- LeetCode 883 三维形体投影面积[数学] HERODING的LeetCode之路
解题思路: 本次每日一题题目描述极其不清,其实就是对于n*n的物体,求其三个投影的面积和,也就是底面积(该位置是否有方块)+每行最高的和+每列最高的和,代码如下: class Solution {pu ...
- LeetCode刷题之883. 三维形体投影面积
LeetCode刷题之883. 三维形体投影面积 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 在N*N的网格中,我们放置了一些与 ...
- #力扣LeetCode883. 三维形体投影面积 @FDDLC
题目描述: 883. 三维形体投影面积 - 力扣(LeetCode) (leetcode-cn.com) Java代码: class Solution {public int projectionAr ...
- 力扣——883. 三维形体投影面积(Java、JavaScript、C实现)
三维形体投影面积 在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 ( ...
- LeetCode 0883「三维形体投影面积」
文章目录 题目 分析 实现 题目 在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值v = grid[i][j] 表示 v 个正方体叠 ...
- LeetCode(883)——三维形体投影面积(JavaScript)
在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 现在,我们查看 ...
最新文章
- .net里鼠标选中的text数据怎么获取_Python数据科学实践 | 爬虫1
- lsof根据端口查进程
- 供应链金融服务平台:应收、预付和存货融资业务
- 面向对象三大特性之一:继承(C++)
- vant 做表格_Vant List 列表
- 2020年国家电网计算机类考纲,终于发布!详解2020届国家电网考试大纲,带你读懂考纲变化!...
- 详细js读取execl内容并展示
- linux-权限案例-文件与目录权限
- python读取多通道信号中的一个通道_RFID多通道读写器的具体应用
- 百度推出挖掘机自动驾驶技术:操作不输蓝翔
- qTip2 精致的jQuery提示信息插件
- javaweb项目图
- 如何根据一张照片判断出女孩住在几层楼?
- 某企业通达OA任意登录漏洞复现
- 巴蜀1471 魔兽争霸
- 关键词提取:TF-IDF和n-gram
- ps中如何批量修改图片
- XMLHttpRequest cannot load 的解决方法
- 坐标系旋转后的点坐标、坐标点旋转后的点坐标
- 浅析新媒体运营工作内容