題目描述:
在 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 平面上的投影。投影就像影子,將三維形體對映到乙個二維平面上。在這裡,從頂部 前面和側面看立方...