題記 三維形體的表面積 leetcode

2021-10-07 04:56:40 字數 1118 閱讀 9413

在 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

思路:[暴力]

我們可以求每個正方體的表面積,然後加起來即可。

如:grid[0][1] = 3

他有乙個頂部面積和底部面積為 top = 2

如果grid[0][1]在整個三維形體的左側,那麼它的左側面積為 grid[0][1];

如果grid[0][1]的右側grid[0][2]的高度比grid[0][1]小,那麼右側的面積為grid[0][1] - grid[0][2];

重複步驟2,3檢查其他方向。

重複以上步驟,最終得到每個位置上所貢獻出的頂面和底面積和側面積的和,則為三維形體的表面積。

上**(c):

//

判斷這個位置是不是在三維形體的一側

bool check( int x, int y, int xlen, int

ylen )

int su***cearea(int** grid, int gridsize, int*gridcolsize),,,};

int top = 0

;

int side = 0

;

for( int i = 0; i < gridsize; i++)

else}}

}return side+top;

}

2020-03-25-09:45:22

三維形體的表面積

三維形體的表面積 93min 在 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 ...

三維形體的表面積

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

leetcode三維形體的表面積

對於grid i,j 設其值為val,則單獨考慮當前元素,其貢獻的表面積為4 val 2 但是,gird i,j 可能和其他元素挨著,當挨著時,對於接觸的表面,要減去其表面積 對grid i,j 有上下左右四個方向可能有接觸,但我們只需要考慮上和左兩個方向,右和下放到後面的元素去考慮。即對grid ...