892 三維形體的表面積

2021-10-04 10:13:22 字數 886 閱讀 7628

在 n * n 的網格上,我們放置一些 1 * 1 * 1  的立方體。

每個值 v = grid[i][j] 表示 v 個正方體疊放在對應單元格 (i, j) 上。

請你返回最終形體的表面積。

示例 1:

輸入:[[2]]

輸出:10

示例 2:

輸入:[[1,2],[3,4]]

輸出:34

示例 3:

輸入:[[1,0],[0,2]]

輸出:16

示例 4:

輸入:[[1,1,1],[1,0,1],[1,1,1]]

輸出:32

示例 5:

輸入:[[2,2,2],[2,1,2],[2,2,2]]

輸出:46

1 <= n <= 50

0 <= grid[i][j] <= 50

假設一共有 n 個立方體,每個立方體都有六個面,那麼總的表面積應該是 6n。但是這些正方體堆疊在了一起,需要減掉一些因為堆疊而露不出來的表面積。每一對相鄰的立方體接觸在一起,都會讓表面積減少 2。假設一共有 e 對相接觸的立方體,即有 e 個接觸面,表面積就會減少 2e。那麼,最終的表面積就應該是 6n - 2e。

那麼如何計算立方體的接觸面呢?很簡單,我們還是把每個單元格上堆疊的 v 個立方體看成乙個柱子。立方體的接觸面可以分為柱子內部和柱子之間的接觸面:

v 個立方體的柱子內部,有 v - 1 個接觸面

高度分別為 v、w 的兩個立方體之間的接觸面為 min(v, w)

public int su***cearea(int grid) 

if(i>0)

if(j>0)}}

return num*6-face*2;

}

892 三維形體的表面積

su ce area of 3d shapes 題目描述 在 n n 的網格上,我們放置一些 1 1 1 的立方體。每個值 v grid i j 表示 v 個正方體疊放在對應單元格 i,j 上。請你返回最終形體的表面積。示例 1 輸入 2 輸出 10 示例 2 輸入 1,2 3,4 輸出 34 示例...

(思維)892 三維形體的表面積

在 n n 的網格上,我們放置一些 1 1 1 的立方體。每個值 v grid i j 表示 v 個正方體疊放在對應單元格 i,j 上。請你返回最終形體的表面積。示例 1 輸入 2 輸出 10 示例 2 輸入 1,2 3,4 輸出 34 示例 3 輸入 1,0 0,2 輸出 16 示例 4 輸入 1...

LeetCode892 三維形體的表面積

題目描述 在 n n 的網格上,我們放置一些 1 1 1 的立方體。每個值 v grid i j 表示 v 個正方體疊放在對應單元格 i,j 上。請你返回最終形體的表面積。示例 1 輸入 2 輸出 10 示例 2 輸入 1,2 3,4 輸出 34 示例 3 輸入 1,0 0,2 輸出 16 示例 4...