-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy path0883-projection-area-of-3d-shapes.js
43 lines (38 loc) · 1.16 KB
/
0883-projection-area-of-3d-shapes.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* 883. Projection Area of 3D Shapes
* https://leetcode.com/problems/projection-area-of-3d-shapes/
* Difficulty: Easy
*
* You are given an n x n grid where we place some 1 x 1 x 1 cubes that are axis-aligned
* with the x, y, and z axes.
*
* Each value v = grid[i][j] represents a tower of v cubes placed on top of the cell (i, j).
*
* We view the projection of these cubes onto the xy, yz, and zx planes.
*
* A projection is like a shadow, that maps our 3-dimensional figure to a 2-dimensional plane.
* We are viewing the "shadow" when looking at the cubes from the top, the front, and the side.
*
* Return the total area of all three projections.
*/
/**
* @param {number[][]} grid
* @return {number}
*/
var projectionArea = function(grid) {
let topView = 0;
let frontView = 0;
let sideView = 0;
for (let i = 0; i < grid.length; i++) {
let maxRow = 0;
let maxCol = 0;
for (let j = 0; j < grid.length; j++) {
if (grid[i][j] > 0) topView++;
maxRow = Math.max(maxRow, grid[i][j]);
maxCol = Math.max(maxCol, grid[j][i]);
}
frontView += maxRow;
sideView += maxCol;
}
return topView + frontView + sideView;
};