3D 形状的投影面积

pythonserver side programmingprogramming更新于 2023/11/9 18:18:00

假设有一个 N x N 网格,我们放置一些与 x、y 和 z 轴对齐的 1 x 1 x 1 立方体。这里每个值 v = grid[i][j] 都显示放置在网格单元 (i, j) 顶部的 v 个立方体塔。我们查看这些立方体在 xy、yz 和 zx 平面上的投影。在这里,我们从顶部、正面和侧面查看立方体时的投影。我们必须找到所有三个投影的总面积。

因此,如果输入像 [[1,2],[3,4]]

则输出为 17。

要解决这个问题,我们将遵循以下步骤 −

  • xy := 0, yz := 0, xz := 0
  • 对于网格中的每一行索引 r 和行,执行
    • yz := yz + 行的最大值
    • 对于行中的每一列索引 c 和列 col,执行
      • 如果 grid[r][c] > 0 非零,则
        • xy := xy + 1
    • 对于网格中的每个列,执行
      • xz := xz + 列的最大值
  • 返回 xy + yz + xz

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

示例

class Solution(object):
   def projectionArea(self, grid):
      xy = 0
      yz = 0
      xz = 0
      for r, row in enumerate(grid):
         yz += max(row)
         for c, col in enumerate(row):
            if grid[r][c] > 0:
               xy += 1
            for col in zip(*grid):
               xz += max(col)
      return xy + yz + xz
ob = Solution()
print(ob.projectionArea([[1,2],[3,4]]))

输入

[[1,2],[3,4]]

输出

17

相关文章