计算表面积

2020-03-25  本文已影响0人  madao756

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 的两份贴合面积

上一篇 下一篇

猜你喜欢

热点阅读