1
class Solution {
2
public:
3
int surfaceArea(vector<vector<int>> &grid) {
4
int area = 0;
5

6
for (int i = 0; i < grid.size(); i++) {
7
for (int j = 0; j < grid[0].size(); j++) {
8
// adding 4 sides
9
area += grid[i][j] * 4;
10

11
// adding two because of there will only one top and one bottom if cube
12
// is placed upon each other
13
if (grid[i][j] != 0) area += 2;
14

15
// subtracting adjacent side area if any
16
if (i - 1 >= 0) area -= min(grid[i - 1][j], grid[i][j]);
17
if (i + 1 < grid.size()) area -= min(grid[i + 1][j], grid[i][j]);
18
if (j - 1 >= 0) area -= min(grid[i][j - 1], grid[i][j]);
19
if (j + 1 < grid.size()) area -= min(grid[i][j + 1], grid[i][j]);
20
}
21
}
22

23
return area;
24
}
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0