883 三維形體投影面積

2021-10-23 19:32:10 字數 1303 閱讀 7545

題目描述:

在 n * n 的網格中,我們放置了一些與 x,y,z 三軸對齊的 1 * 1 * 1 立方體。

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

現在,我們檢視這些立方體在 xy、yz 和 zx 平面上的投影。

投影就像影子,將三維形體對映到乙個二維平面上。

在這裡,從頂部、前面和側面看立方體時,我們會看到「影子」。

返回所有三個投影的總面積。

示例 1:

輸入:[[2]]

輸出:5

示例 2:

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

輸出:17

解釋:這裡有該形體在三個軸對齊平面上的三個投影(「陰影部分」)。

示例 3:

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

輸出:8

示例 4:

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

輸出:14

示例 5:

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

輸出:21

1 <= grid.length = grid[0].l

方法1:

主要思路:

(1)儲存每一行的最大值,每一列的最大值,和不為0的元素的位置的數量(作為底板面積);

(2)將每一行的和每一列的最大值加到面積中即為所要投影面積;

class

solution}}

//將另外兩個方向的投影放到面積中

for(

int& it:left_mp)

for(

int& it:front_mp)

return area;}}

;

方法2:主要思路:

(1)直接在一次遍歷中,通過調整左邊的索引,獲得當前的行最大值和列最大值,減少記憶體的使用;

class

solution

}//總的面積

area+

=cur_row_max+cur_col_max;

}return area;}}

;

leetcode 883 三維形體投影面積

在 n n 的網格中,我們放置了一些與 x,y,z 三軸對齊的 1 1 1 立方體。每個值 v grid i j 表示 v 個正方體疊放在單元格 i,j 上。現在,我們檢視這些立方體在 xy yz 和 zx 平面上的投影。投影就像影子,將三維形體對映到乙個二維平面上。在這裡,從頂部 前面和側面看立方...

力扣 883 三維形體投影面積 C

在 n n 的網格中,我們放置了一些與 x,y,z 三軸對齊的 1 1 1 立方體。每個值 v grid i j 表示 v 個正方體疊放在單元格 i,j 上。現在,我們檢視這些立方體在 xy yz 和 zx 平面上的投影。投影就像影子,將三維形體對映到乙個二維平面上。在這裡,從頂部 前面和側面看立方...

LeetCode 三維形體投影面積

在 n n 的網格中,我們放置了一些與 x,y,z 三軸對齊的 1 1 1 立方體。每個值 v grid i j 表示 v 個正方體疊放在單元格 i,j 上。現在,我們檢視這些立方體在 xy yz 和 zx 平面上的投影。投影就像影子,將三維形體對映到乙個二維平面上。在這裡,從頂部 前面和側面看立方...