美文网首页
计算表面积

计算表面积

作者: madao756 | 来源:发表于2020-03-25 11:40 被阅读0次

0X00 算法总结

class Solution:
    def surfaceArea(self, grid: List[List[int]]) -> int:
        if len(grid) == 0: return 0
        m, n = len(grid), len(grid[0])
        
        ans = 0

        for x in range(m):
            for y in range(n):
                h = grid[x][y]
                if h > 0:
                    ans += (h << 2) + 2
                    # 减去两份贴合的面积
                    ans -= (min(grid[x-1][y], h) << 1) if x > 0 else 0
                    ans -= (min(grid[x][y-1], h) << 1) if y > 0 else 0
        
        return ans

分别计算每个柱体的表面积, 然后减去每个柱子的贴合部分

比如有下面这些柱子:

6
2
3
4

在计算 2 的时候减去 2 6 的两份贴合面积

相关文章

网友评论

      本文标题:计算表面积

      本文链接:https://www.haomeiwen.com/subject/wpetuhtx.html