理解题目:
观看视频:B站
代码出处
观看视频:B站
代码python
class Solution(object):
def surfaceArea(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
all_area = 0
cover = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
#用来计算所有正方形的面积
all_area += grid[i][j]*6
#计算垂直方向的遮挡
if grid[i][j]>1:
cover += 2*(grid[i][j]-1)
#行:再计算第二行以后,与前面行的遮挡情况
if i>0:
cover += 2*(min(grid[i][j],grid[i-1][j]))
#列:同理
if j >0:
cover += 2*(min(grid[i][j],grid[i][j-1]))
return all_area-cover