892. 三维形体的表面积-E-82.35%

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

关键点

考虑有多少个面被遮挡

举例


1 2
3 4

首先考虑竖面遮挡:
1与2之间被遮挡了2面
1与3之间被遮挡了2面
2与4之间被遮挡了4面
4与3之间被遮挡了6面

2*min(M,N)

其次考虑横面被遮挡
1没有
2有2面被遮挡
3有4面被遮挡
4有6面被遮挡

2*(N-1)

sum*6-被遮挡的面数 即可

代码
class Solution(object):
    def surfaceArea(self, grid):
        """
        :type grid: List[List[int]]
        :rtype: int
        """
        count=0
        n=len(grid)
        sumnum=0
        for i in range(n):
            for j in range(n):
                sumnum+=6*grid[i][j]-2*((grid[i][j]-1 if grid[i][j]!=0 else 0))
                if(j!=n-1):
                    count+=2*min(grid[i][j],grid[i][j+1])
                if(i!=n-1):
                    count += 2 * min(grid[i][j], grid[i+1][j])
        sumnum-=count
        return sumnum

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值