题目链接

题目描述:

在 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

解题思路:
grid的长度表示立方体的行数,中间每一个元素表示叠放的立方体个数,x-y上的阴影面积就是grid中不为0的个数,其余两个方向的投影分别为每行最大值之和,每列最大值只和。

class Solution:def projectionArea(self, grid: List[List[int]]) -> int:area=0for i in grid:area+=max(i)for j in i:if j!=0:area+=1for i in range(0,len(grid[0])):mm=0for j in range(len(grid)):if grid[j][i]>mm:mm= grid[j][i]area+=mmreturn area

p.s.别人的做法
计算x-y投影时,不用遍历每一个元素,遍历每一行统计这一行0的个数,用元素总数减去即可;用zip(*grid)得到转置后的矩阵,这样在统计每一行的最大值,用一重循环即可。

        sum=0for row in grid:sum+=max(row)sum-=row.count(0)for col in zip(*grid):sum+=max(col)return sum+len(grid)*len(grid)

leetcode 883. 三维形体投影面积(python)相关推荐

  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 三维形体投影面积[数学] HERODING的LeetCode之路

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

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

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

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

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

  6. LeetCode 887. 三维形体投影面积

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

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

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

  8. 【Leetcode】883. 三维形体投影面积

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

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

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

最新文章

  1. React 组件之间 事件调用(父组件调用子组件)
  2. 医疗安全监控与检测平台WattsUpDoc
  3. 【万字长文】详解Python时间处理模块-datetime
  4. oracle access manager token,AuthenticationManager验证原理
  5. 原生JS封装自己的AJAX
  6. /usr/bin/ld: cannot find -lfontconfig解决方法
  7. 最优化课程笔记07——约束问题的非线性规划方法(重点:拉格朗日乘子法和惩罚函数法)
  8. 为什么 Java 进程使用的 RAM 比 Heap Size 大?​ | CSDN博文精选
  9. 如何保障大数据平台的安全性
  10. C#控制台应用程序执行结果一闪而过的解决方法
  11. flask 导出excel
  12. 在线计算机微积分,高等数学计算器
  13. 【转载】Ansys中的阻尼
  14. 手机厂商为什么都开始造电视了?
  15. 笔记本电脑更改计算机驱动怎么进不去,笔记本电脑进入不了BIOS的原因与解决办法...
  16. 一键编译安装mysql数据库
  17. Linux可重入函数
  18. SCTK的使用——MgB2
  19. Python这么火,关软件测试什么事?
  20. IEEE1394串行连接技术

热门文章

  1. python如何输出数字穿插大小写:a1B2c3D4e5F6g7H8i9J10
  2. Houdini中角色通用修穿插方法
  3. Ubuntu 和 Debian 的关系
  4. 美国科技博客网:改变世界15种技术
  5. JetBot之旅(1)
  6. 高斯朴素贝叶斯分类的原理解释和手写代码实现
  7. 简书上使用markdown
  8. 内核线程卡死两例——sysrq运用简例
  9. 高数 | 旋转体体积的一般公式
  10. 那些年门户网站开发应该遵循的原则