力扣883.三维体投影面积
题目描述
在 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
解题思路
此题理解了投影的数学意义就好办,所谓投影就是在某平面能投下的最大面积
所以在xoy平面的投影就是非零项的数量,我用了gridSize*(*gridColSize)-零项的数量来计算
在xoz平面的投影就是各个子数组的最大值之和
在yoz平面的投影就是各个子数组相同位置的最大值之和
把三个平面面积相加即可
可改进:使用数组存放最大值,就避免了两次嵌套循环
代码
int projectionArea(int** grid, int gridSize, int* gridColSize){int xyCount=gridSize*(*gridColSize);int xzCount=0;int yzCount=0;for(int i=0;i<gridSize;i++){int xMax=grid[i][0];for(int j=0;j<*gridColSize;j++){if(grid[i][j]==0)xyCount--;if(grid[i][j]>xMax)xMax=grid[i][j];}xzCount+=xMax;}for(int p=0;p<*gridColSize;p++){int yMax=grid[0][p];for(int q=0;q<gridSize;q++){if(grid[q][p]>yMax)yMax=grid[q][p];} yzCount+=yMax;}return xyCount+xzCount+yzCount;}
链接
力扣883.三维体投影面积相关推荐
- 力扣——883. 三维形体投影面积(Java、JavaScript、C实现)
三维形体投影面积 在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 ( ...
- #力扣LeetCode883. 三维形体投影面积 @FDDLC
题目描述: 883. 三维形体投影面积 - 力扣(LeetCode) (leetcode-cn.com) Java代码: class Solution {public int projectionAr ...
- 883.三维形体投影面积
在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 现在,我们查 ...
- LeetCode 883. 三维形体投影面积(数学)
文章目录 题目 方法:数学 题目 883. 三维形体投影面积 方法:数学 xyxyxy 平面的投影面积等于网格上非零数值的数目 yz\texttt{yz}yz 平面的投影面积等于网格上每一列最大数值之 ...
- LeetCode刷题之883. 三维形体投影面积
LeetCode刷题之883. 三维形体投影面积 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 在N*N的网格中,我们放置了一些与 ...
- LeetCode——883. 三维形体投影面积
文章目录 题目描述 答案 我的答案 官方答案 数学 题目描述 在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值 v = grid[i ...
- 【C语言刷LeetCode】883. 三维形体投影面积(E)
[ 格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 现在,我们查看这 ...
- 力扣第三题java_LeetCode 题解 | 力扣杯 LCP 06. 拿硬币
力扣杯 LCP 06. 拿硬币(点击查看题目) 力扣leetcode-cn.com 题目描述 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中.我们每次可以选择任意一堆,拿走其中的一枚或者 ...
- 岛屿类-网格类问题-DFS | 力扣695. 岛屿的最大面积
思路参考上文: 岛屿类-网格类问题-DFS | 力扣200. 岛屿数量 本文讲解695. 岛屿的最大面积问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想 题目 给定一个包含了一些 0 和 1 ...
最新文章
- [ C++ ] 理解const
- python分片是什么_python中的分片
- JoshChen_php 简单的商城网站功能原理(一)
- RxJava中常见的几种Subject
- 《MySQL tips:并发查询与并发连接区别》
- file_table.c 文件分析 linux1_0\linux\fs\file_table.c
- LeetCode 5382. HTML 实体解析器
- 【网络安全工程师面试合集】—Web安全攻防技术演化
- verlet-rope-latest 的扩展—— BYRope
- 解决log4j:WARN No appenders could be found for logger
- Python requests抓取有道翻译 最新版破解js加密
- files函数提取文件名HTML,Excel小技巧之轻松提取文件夹中的文件名
- ETL工具-Taskctl在Windows作业类型的使用(Soap服务驱动)
- 人工神经网络分析方法,神经网络数据分析步骤
- 推荐Arduino更深入学习:《新概念51单片机C语言教程》-郭天祥(文章内含学习资料供下载)
- java多线程 Semaphore CountDownLatch ScheduledExecutorService
- 系统更新win10服务器出错怎么办,windows10更新升级失败0x80072ee2解决方法
- html为知笔记模板,为知笔记,模板制作.doc
- ps html 优化,优化 Photoshop 的性能
- csu-2018年11月月赛Round2-div1题解
热门文章
- 面向java开发者的函数式编程_函数式编程让你忘记设计模式
- SharePoint中添加或者修改Item时调用EventReceiver(Event Handler)处理额外的逻辑
- 笔记-多项式相关操作
- python入门-windows下anaconda环境搭建
- asp.net core 2.0 api ajax跨域问题
- Python基础1(2017-07-16)
- Lisp的本质(The Nature of Lisp)
- java 蓝桥杯算法提高 身份证号码升级(题解)
- 基于pytorch实现图像分类——理解自动求导、计算图、静态图、动态图、pytorch入门
- spark基础之RDD和DataFrame的转换方式