2
public int surfaceArea(int[][] grid) {5
for (int i = 0; i < n; i++) {6
for (int j = 0; j < n; j++) {8
// Adding the top part of grid9
if (i == 0) area += grid[i][j];10
else area += Math.abs(grid[i][j] - grid[i - 1][j]);12
// Adding the left part of grid13
if (j == 0) area += grid[i][j];14
else area += Math.abs(grid[i][j] - grid[i][j - 1]);16
// Adding bottom part of bottom-most cubes17
if (i == n - 1) area += grid[i][j];19
// Adding right part for right-most cubes20
if (j == n - 1) area += grid[i][j];22
// Add top and bottom surfaces if there is no hole in grid23
if (grid[i][j] != 0) area += 2;