Golang:
思路:算表面积,这里可以将每个单独的坐标的方块的表面积直接加起来,然后去算与它相邻的坐标是否有方块,然后减去相应的表面积,相邻坐标只需要考虑左边和上面即可。
代码如下:
func surfaceArea(grid [][]int) int {
res:=0
for i:=0;i<len(grid);i++{
for j:=0;j<len(grid[0]);j++{
if grid[i][j]!=0{
res+=(grid[i][j]-1)*4+6
if i!=0&&grid[i-1][j]!=0{
res-=min(grid[i-1][j],grid[i][j])*2
}
if j!=0&&grid[i][j-1]!=0{
res-=min(grid[i][j],grid[i][j-1])*2
}
}
}
}
return res
}
func min(x int, y int) int {
if x > y {
return y
} else {
return x
}
}
有疑问加站长微信联系(非本文作者)