题目:
在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。
每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。
请你返回最终形体的表面积。
示例 1:
输入:[[2]]
输出:10
示例 2:
输入:[[1,2],[3,4]]
输出:34
示例 3:
输入:[[1,0],[0,2]]
输出:16
示例 4:
输入:[[1,1,1],[1,0,1],[1,1,1]]
输出:32
示例 5:
输入:[[2,2,2],[2,1,2],[2,2,2]]
输出:46
提示:
1 <= N <= 50
0 <= grid[i][j] <= 50
题目的理解:
计算每一个坐标的表面积,然后累加。
python实现
from typing import List
class Solution:
def surfaceArea(self, grid: List[List[int]]) -> int:
total_area = 0
N = len(grid)
for row in range(N):
for column in range(N):
value = grid[row][column]
if 0 == value:
continue
total_area += 2
if column - 1 >= 0:
if grid[row][column - 1] < value:
total_area += value - grid[row][column - 1]
else:
total_area += value
if column + 1 < N:
if grid[row][column + 1] < value:
total_area += value - grid[row][column + 1]
else:
total_area += value
if row - 1 >= 0:
if grid[row - 1][column] < value:
total_area += value - grid[row - 1][column]
else:
total_area += value
if row + 1 < N:
if grid[row + 1][column] < value:
total_area += value - grid[row + 1][column]
else:
total_area += value
return total_area
想看最优解法移步此处
提交
ok看了解法后,觉得代码还可以优化下啊,写了好多的冗余代码。
// END 学无止境,保持好的心态继续加油
网友评论