題目描述 三維形體投影面積
在 N * N 的網(wǎng)格中蹂析,我們放置了一些與 x谎仲,y舞吭,z 三軸對齊的 1 * 1 * 1 立方體幔虏。
每個值 v = grid[i][j] 表示 v 個正方體疊放在單元格 (i, j) 上。
現(xiàn)在捂掰,我們查看這些立方體在 xy敢会、yz 和 zx 平面上的投影。
投影就像影子这嚣,將三維形體映射到一個二維平面上鸥昏。
在這里,從頂部姐帚、前面和側(cè)面看立方體時吏垮,我們會看到“影子”。
返回所有三個投影的總面積卧土。
示例
輸入:[[1,2],[3,4]]
輸出:17
解釋:
這里有該形體在三個軸對齊平面上的三個投影(“陰影部分”)惫皱。
解題思路
1.從頂部看:有幾個網(wǎng)格上有立方體像樊,面積就是幾尤莺;
2.從前面看:面積為每列最大值;
3.從側(cè)面看:面積為每行最大值生棍;
代碼
class Solution {
public:
int projectionArea(vector<vector<int>>& grid) {
int sum = 0;
for(int i=0;i<grid.size();i++){
int temp1 = 0;
int temp2 = 0;
for(int j=0;j<grid[0].size();j++){
if(grid[i][j]>0) sum ++;
temp1 = max(temp1, grid[i][j]);
temp2 = max(temp2, grid[j][i]);
}
sum += temp1;
sum += temp2;
}
return sum;
}
};
int main(){
Solution sol;
vector<vector <int>> grid = {{1, 2},{3, 4}};
int res = sol.projectionArea(grid);
cout << res << endl;
return 0;
}