社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

leetcode每日一题 python解法 3月25日

Never肥宅 • 5 年前 • 246 次点击  

难度:简单

题目内容:

在 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

题解:

逐个遍历平面上的坐标,然后把柱体表面积加上,然后如果有和之前接触的就减去

代码

class Solution:
    def surfaceArea(self, grid: List[List[int]]) -> int:
        r = 0
        for i in range(len(grid)):
            for j in range(len(grid[i])):
                #print("i:",i,"j:",j)
                if(grid[i][j]>0):
                    r += grid[i][j]*4 + 2
                #print("r:",r)
                try:
                    if(i > 0):
                        r -= min(grid[i-1][j],grid[i][j] )* 2
                        #print("i+")
                except:
                    pass
                try:
                    if(j > 0):
                        r -= min(grid[i][j-1],grid[i][j] )* 2
                        #print("j+")
                except:
                    pass
        return r
    

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56749
 
246 次点击