Python中3D形状的表面积
假设有一个NxN的网格,我们放置一些1x1x1的立方体。在里面。现在,对于每个值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