【題目描述】
在 N * N 的網(wǎng)格中要糊,我們放置了一些與 x纲熏,y,z 三軸對齊的 1 * 1 * 1 立方體锄俄。
每個值 v = grid[i][j] 表示 v 個正方體疊放在單元格 (i, j) 上局劲。
現(xiàn)在,我們查看這些立方體在 xy奶赠、yz 和 zx 平面上的投影鱼填。
投影就像影子,將三維形體映射到一個二維平面上毅戈。
在這里苹丸,從頂部、前面和側(cè)面看立方體時苇经,我們會看到“影子”赘理。
返回所有三個投影的總面積。
【示例1】
輸入:[[1,2],[3,4]]
輸出:17
解釋:
這里有該形體在三個軸對齊平面上的三個投影(“陰影部分”)塑陵。
image
【示例2】
輸入:[[1,0],[0,2]]
輸出:8
【示例3】
輸入:[[1,1,1],[1,0,1],[1,1,1]]
輸出:14
【示例4】
輸入:[[2,2,2],[2,1,2],[2,2,2]]
輸出:21
思路:
1感憾、其實就是求三維形狀的 左視圖+主視圖+俯視圖之和
2蜡励、x軸上最大值 + y軸上最大值 + (grid[i][j] 不為零 +1)
代碼實現(xiàn):
func projectionArea(_ grid: [[Int]]) -> Int {
var result = 0
for i in 0..<grid.count {
var max_x = 0 //每次變量清零
var max_y = 0
for j in 0..<grid.count {
max_x = max(max_x, grid[i][j])//x軸取大值
max_y = max(max_y, grid[j][i])//y軸取大值
if grid[i][j] > 0 {//z軸
result+=1
}
}
result += (max_y+max_x)
}
return result
}