题目描述

在 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.三维体投影面积相关推荐

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

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

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

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

  3. 883.三维形体投影面积

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

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

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

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

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

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

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

  7. 【C语言刷LeetCode】883. 三维形体投影面积(E)

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

  8. 力扣第三题java_LeetCode 题解 | 力扣杯 LCP 06. 拿硬币

    力扣杯 LCP 06. 拿硬币(点击查看题目) 力扣​leetcode-cn.com 题目描述 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中.我们每次可以选择任意一堆,拿走其中的一枚或者 ...

  9. 岛屿类-网格类问题-DFS | 力扣695. 岛屿的最大面积

    思路参考上文: 岛屿类-网格类问题-DFS | 力扣200. 岛屿数量 本文讲解695. 岛屿的最大面积问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想 题目 给定一个包含了一些 0 和 1 ...

最新文章

  1. [ C++ ] 理解const
  2. python分片是什么_python中的分片
  3. JoshChen_php 简单的商城网站功能原理(一)
  4. RxJava中常见的几种Subject
  5. 《MySQL tips:并发查询与并发连接区别》
  6. file_table.c 文件分析 linux1_0\linux\fs\file_table.c
  7. LeetCode 5382. HTML 实体解析器
  8. 【网络安全工程师面试合集】—Web安全攻防技术演化
  9. verlet-rope-latest 的扩展—— BYRope
  10. 解决log4j:WARN No appenders could be found for logger
  11. Python requests抓取有道翻译 最新版破解js加密
  12. files函数提取文件名HTML,Excel小技巧之轻松提取文件夹中的文件名
  13. ETL工具-Taskctl在Windows作业类型的使用(Soap服务驱动)
  14. 人工神经网络分析方法,神经网络数据分析步骤
  15. 推荐Arduino更深入学习:《新概念51单片机C语言教程》-郭天祥(文章内含学习资料供下载)
  16. java多线程 Semaphore CountDownLatch ScheduledExecutorService
  17. 系统更新win10服务器出错怎么办,windows10更新升级失败0x80072ee2解决方法
  18. html为知笔记模板,为知笔记,模板制作.doc
  19. ps html 优化,优化 Photoshop 的性能
  20. csu-2018年11月月赛Round2-div1题解

热门文章

  1. 面向java开发者的函数式编程_函数式编程让你忘记设计模式
  2. SharePoint中添加或者修改Item时调用EventReceiver(Event Handler)处理额外的逻辑
  3. 笔记-多项式相关操作
  4. python入门-windows下anaconda环境搭建
  5. asp.net core 2.0 api ajax跨域问题
  6. Python基础1(2017-07-16)
  7. Lisp的本质(The Nature of Lisp)
  8. java 蓝桥杯算法提高 身份证号码升级(题解)
  9. 基于pytorch实现图像分类——理解自动求导、计算图、静态图、动态图、pytorch入门
  10. spark基础之RDD和DataFrame的转换方式