883. 三維形體投影面積
阿新 • • 發佈:2018-12-10
在 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].length <= 50
0 <= grid[i][j] <= 50
解答如下:
class Solution { public: int projectionArea(vector<vector<int>>& grid) { int row=grid.size(); long result=0; for(int i=0;i<row;i++){ int maxa=grid[i][0]; int maxb=grid[0][i]; for(int j=0;j<row;j++){ //俯視面積 if(grid[i][j]!=0) result++; //正側兩面 maxa=max(grid[i][j],maxa); maxb=max(maxb,grid[j][i]); } result+=maxa+maxb; } return result; } };