题目:
在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体。
每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。
现在,我们查看这些立方体在 xy 、yz 和 zx 平面上的投影。
投影 就像影子,将 三维 形体映射到一个 二维 平面上。从顶部、前面和侧面看立方体时,我们会看到“影子”。
返回 所有三个投影的总面积 。
算法:
方法一:模拟
看看示例一中的图,如何计算在各个方向上的投影。
func projectionArea(grid [][]int) int {
count := 0
m, n := len(grid), len(grid[0])
maxCols := make([]int, n)
for i := 0; i < m; i ++ {
maxRow := 0
for j := 0; j < n; j ++ {
if grid[i][j] != 0 {
count ++
}
if grid[i][j] > maxRow {
maxRow = grid[i][j]
}
if grid[i][j] > maxCols[j] {
maxCols[j] = grid[i][j]
}
}
count = count + maxRow
}
for i := range maxCols {
count = count + maxCols[i]
}
return count
}