892. Surface Area of 3D Shapes
On a N * N
grid, we place some 1 * 1 * 1
cubes.
Each value v = grid[i][j]
represents a tower of v
cubes placed on top of grid cell (i, j)
.
Return the total surface area of the resulting shapes.
Example 1:
Input: [[2]]
Output: 10
Example 2:
Input: [[1,2],[3,4]]
Output: 34
Example 3:
Input: [[1,0],[0,2]]
Output: 16
Example 4:
Input: [[1,1,1],[1,0,1],[1,1,1]]
Output: 32
Example 5:
Input: [[2,2,2],[2,1,2],[2,2,2]]
Output: 46
Note:
1 <= N <= 50
0 <= grid[i][j] <= 50
# @lc code=start
using LeetCode
function surface_area(grid::Vector{Vector{Int}})
res = 2 * sum(sum(1 for i in row if i != 0) for row in grid)
res += sum(row[1] + row[end] + sum(abs, diff(row)) for row in grid)
return res += sum(grid[1][i] +
grid[end][i] +
((length(grid) > 1) ?
(sum(abs(grid[row][i] - grid[row - 1][i]) for row in 2:length(grid))) :
0) for i in 1:length(grid[1]))
end
function surface_area(grid::Matrix{Int})
res = 2 * sum(sum(1 for i in row if i != 0) for row in grid)
res += sum(row[1] + row[end] + sum(abs, diff(row)) for row in eachrow(grid))
res += sum(col[1] + col[end] + sum(abs, diff(col)) for col in eachcol(grid))
res
end
# @lc code=end
surface_area (generic function with 2 methods)
This page was generated using DemoCards.jl and Literate.jl.