python算地表面积_Python中3D形状的表面积

假设有一个N x N的网格,我们放置一些1 x 1 x 1的立方体。在里面。现在,对于每个值v = grid [i] [j]表示放置在网格单元(i,j)顶部的v个立方体的塔。我们必须找到最终形状的总表面积。

因此,如果输入类似于[[1,2 ,, [3,4]],则输出为34。

为了解决这个问题,我们将遵循以下步骤-定义一个功能adjacentArea()。这需要排

面积:= 0

对于范围在0到行大小-1的i,执行面积:=面积+ 2 *第[i]行,第[i + 1]行的最小值

如果row [i]和row [i + 1]不为零,则

返回区

从主要方法中执行以下操作-

z:= 2 *(网格中所有行的(行中i的总和))

x_plus_y:=网格中所有元素的总和* 4

x_adjacent:=网格中所有行的相邻区域(行)之和

y_adjacent:=网格中所有列的相邻区域(行)之和

返回z +(x_plus_y-x_adjacent-y_adjacent)

让我们看下面的实现以更好地理解-

示例class Solution:

def surfaceArea(self, grid):

def adjacentArea(row):

area = 0

for i in range(len(row) - 1):

if row[i] and row[i + 1]:

area += 2 * min(row[i], row[i+1])

return area

z = sum([sum(i > 0 for i in row) for row in grid]) * 2

x_plus_y = sum([sum(row) for row in grid]) * 4

x_adjacent = sum([adjacentArea(row) for row in grid])

y_adjacent = sum([adjacentArea(row) for row in zip(*grid)])

return z + (x_plus_y - x_adjacent - y_adjacent)

ob = Solution()print(ob.surfaceArea([[1,2],[3,4]]))

输入值[[1,2],[3,4]]

输出结果34

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值