题目

给你一个 n * n 的网格 grid ,上面放置着一些 1 x 1 x 1 的正方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。
放置好正方体后,任何直接相邻的正方体都会互相粘在一起,形成一些不规则的三维形体。
请你返回最终这些形体的总表面积。
注意:每个形体的底面也需要计入表面积中。
示例 1:

输入:grid = [[1,2],[3,4]]
输出:34
示例 2:

输入:grid = [[1,1,1],[1,0,1],[1,1,1]]
输出:32
示例 3:

输入:grid = [[2,2,2],[2,1,2],[2,2,2]]
输出:46

提示:
n == grid.length
n == grid[i].length
1 <= n <= 50
0 <= grid[i][j] <= 50
来源:力扣(LeetCode)

解题思路

  题目难度不大但是比较繁琐,需要考虑许多细节。对于堆叠的方块先计算复杂的部分,即堆的比较高的方块和堆的比较低的方块两者紧挨的时候中间露出来的面积;以实例1为例:1号块和2,3号块紧挨2号高出1号一块所以多出来的面积是1,3号高出1号2块,所以多出来的面积为2,我们只需要计算高块比低块多出的部分就可以避免重复计算,所以可以遍历整个矩阵然后根据每个元素周围的情况进行统计复杂面积。剩下的只需要加一个底面积和顶面积,侧面积,而这些面积都是比较好统计的。

class Solution:def surfaceArea(self, grid: List[List[int]]) -> int:n=len(grid)count=0for i in range(n):for j in range(n):if i-1>=0:  #统计复杂部分面积if grid[i][j]-grid[i-1][j]>0:count+=grid[i][j]-grid[i-1][j]if i+1<n:if grid[i][j]-grid[i+1][j]>0:count+=grid[i][j]-grid[i+1][j]if j-1>=0:if grid[i][j]-grid[i][j-1]>0:count+=grid[i][j]-grid[i][j-1]if j+1<n:if grid[i][j]-grid[i][j+1]>0:count+=grid[i][j]-grid[i][j+1]if grid[i][j]>0:  #统计底面积和顶面积count+=2count+=sum(grid[0])  #统计侧面积count+=sum(grid[-1])count+=sum([i[0] for i in grid])count+=sum([i[-1] for i in grid])return count

LeetCode简单题之三维形体的表面积相关推荐

  1. LeetCode(892)——三维形体的表面积(JavaScript)

    在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上. 请你返回最终形体的表面积. 示例1 ...

  2. LeetCode刷题记录——第892题(三维形体的表面积)

    题目描述 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 返回结果形体的总表面积. 示 ...

  3. LeetCode:892. 三维形体的表面积

    892. 三维形体的表面积 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 我们先来理解一下题意: [[1,2],[3,4]]就是一个二维数组A.A[i][j]表示每一个以单位正方形为底的空 ...

  4. LeetCode 892. 三维形体的表面积

    892. 三维形体的表面积 思路:每列的长方形体积为4*grid[i][j]+2,减去抵消掉的表面积 class Solution { public:int surfaceArea(vector< ...

  5. LeetCode 三维形体的表面积

    在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上. 请你返回最终形体的表面积. 示例 ...

  6. LeetCode 892. 三维形体的表面积(数学)

    1. 题目 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上. 请你返回最终形体的表面 ...

  7. Leetcode:892. 三维形体的表面积(Java)

    在 N * N 的网格上,我们放置一些 1 * 1 * 1  的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上. 请你返回最终形体的表面积. 示例 ...

  8. Leetcode-892. 三维形体的表面积

    题目:(简单) 在 N * N 的网格上,我们放置一些 1 * 1 * 1  的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上. 请你返回最终形体 ...

  9. python求球的表面积_892. 三维形体的表面积(Python)

    题目 难度:★★☆☆☆ 类型:几何.数学.二维数组 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, ...

最新文章

  1. Dubbo OPS工具——dubbo-admin dubbo-monitor
  2. 浅谈STM32的DMA模块的使用
  3. ScrollPic.js——图片左右滚动插件
  4. python里面的import provide_Python importorror:没有名为wmi的模块
  5. 核弹级漏洞 Apache Log4j2 漏洞详情和修复建议
  6. win10 iot core java_Windows 10 IoT Core 正式版初体验
  7. java递归方法建立搜索二叉树,具备查找关键字,插入新节点功能
  8. docker命令每次需要sudo操作解决方案
  9. 5G对于数据中心的影响有哪些
  10. python学习之多线程多进程
  11. 蓝桥杯2019年第十届C/C++省赛B组第九题-后缀表达式
  12. 骑手的困境,资本的压榨
  13. 获得PMP认证的过程及心路历程
  14. 直击硅谷最火全球区块链峰会,40位大咖讲了啥?
  15. Android开发:申请小米开发者账号步骤
  16. java 内存文件_Java内存映射文件(Memory Mapped Files)
  17. 电脑计算机丢失msvcp140.dll,电脑缺少msvcp140.dll怎么办
  18. Mac VScode 常用快捷键
  19. C# 设置文件默认打开程序
  20. 为什么要阅读——兼分享《首先,打破一切常规》[中译文]:世界顶级管理者的成功秘诀/(美)马库斯#183;白金汉,(美)柯特#183;科夫曼 著...

热门文章

  1. 从言行合一到知行合一
  2. JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性
  3. GitHub 中 Merge pull request 的 3 中选项说明
  4. perl: warning: Setting locale failed. Falling back to a fallback locale (“en_HK.UTF-8“).
  5. 2022-2028年中国塑胶模具行业市场专项调研及前瞻分析报告
  6. Pandas_transform的用法
  7. linux sh 改 cmd
  8. Python第三方包的egg info 是什么东西
  9. 电脑蓝屏问题检查、解决、
  10. Visual SLAM