数据结构和算法分析算法提高之LeetCode刷题

三维形体的表面积

2020-03-25  本文已影响0人  _阿南_

题目:

在 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 学无止境,保持好的心态继续加油

上一篇 下一篇

猜你喜欢

热点阅读