3D 形狀的投影面積
假設有一個 N x N 網格,我們放置一些與 x、y 和 z 軸對齊的 1 x 1 x 1 立方體。此處每個值 v = grid[i][j] 顯示放置在網格單元格 (i,j) 上方的一個 v 立方體塔。我們從上面、前面和側面檢視這些立方體的投影。在從頂部、正面和側面檢視立方體時,我們必須找出所有三個投影的總面積。
因此,如果輸入類似 [[1,2],[3,4]]

那麼輸出將是 17.
要解決此問題,我們將遵循以下步驟 −
- xy := 0, yz := 0, xz := 0
- 對每個行索引 r 和 grid 中的行 row 執行操作
- yz := yz + 大於行的 row
- 對於 row 中的每個列索引 c 和列 col 執行操作
- 如果 grid[r][c] > 0 是非零,則
- xy := xy + 1
- 如果 grid[r][c] > 0 是非零,則
- 對於 grid 中的每個 col 執行操作
- xz := xz + 最大 col
- 返回 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP