在 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...