883.Projection_Area_of_3D_Shapes

两年前刷题,就遇见了,这个问题,当时没看懂,后来直接就不刷题了,现在,我又遇见了这个题,那它到底是个啥
其实这个题,说穿了,很简单。

给一个二维数组,

1
2
3
4
5
1, 2, 2, 1
2, 3, 4, 1
1, 3, 2, 1
2, 0, 3, 4

根据这个二维数组,转为 3D 的试图,每一个元素是一个小块,值代表了高度,位置就是在 3D 试图中的位置 ,然后看俯视图,左视图,正视图。求他们的面积和

如上数组所示

左视图,求每行中,最高的那个,然后累加
正视图,求每列中,最高的那个,然后累加
俯视图,求每个元素不为 0 的个数

思路很简单,就直接写代码了,Go 实现如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
func projectionArea(grid [][]int) int {

var res int = 0

// 找出每一行的最大值,列的值
// 找出每一列的最大值,行的值

for I, iV := range grid {

var col = 0
var row = 0

for J, v := range iV {

if v > 0 {
res++
}
if v > col {
col = v
}

if grid[J][I] > row {
row = grid[J][I]
}
}
res = res + row + col
}
return res
}

遇到 leetCode 玄学问题,这次 for range 比 常规 for 遍历要快。。。也是无语了