小编给大家分享一下leetcode中如何求三维形体的表面积,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
10多年的番禺网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整番禺建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“番禺网站设计”,“番禺网站推广”以来,每个客户项目都认真落实执行。
三维形体的表面积
在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。
每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。
请你返回最终形体的表面积。
示例 1:输入:[[2]]输出:10
示例 2:输入:[[1,2],[3,4]]输出:34
示例 3:输入:[[1,0],[0,2]]输出:16
示例 4:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:32
示例 5:输入:[[2,2,2],[2,1,2],[2,2,2]]输出:46
提示:1 <= N <= 500 <= grid[i][j] <= 50
思路:
一个立方体的面积为 4 * 1 + 2
n 个立方体并排或者并列的面积为 ((4 * 1 + 2) - min(1,1) * 2) * (n - 1) + 4 * 1 + 2((4∗1+2)−min(1,1)∗2)∗(n−1)+4∗1+2 (其中min(1,1) * 2 是两个连一起导致的被隐藏的表面积)
class Solution: def surfaceArea(self, grid: List[List[int]]) -> int: ans = 0 for i in range(len(grid)): for j in range(len(grid[0])): if grid[i][j] > 0: ans += grid[i][j] * 4 + 2 if i > 0: ans -= 2 * min(grid[i][j], grid[i - 1][j]) if j > 0: ans -= 2 * min(grid[i][j], grid[i][j - 1]) return ans
看完了这篇文章,相信你对“leetcode中如何求三维形体的表面积”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!