zoukankan      html  css  js  c++  java
  • leetcode 218 天际线问题变形

    原答案有点问题, 面试官给出的答案是要求求出所有边界线,包括各种拐点,收尾两个0点。

    class Solution:
        def getSkyline(self, buildings):
            """
            :type buildings: List[List[int]]
            :rtype: List[List[int]]
            """
            sdict = {}
            for lou in buildings:
                for x in range(lou[0], lou[1]+1):
                    if x not in sdict.keys():
                        sdict[x] = [lou[2]]
                    else:
                        sdict[x].append(lou[2])
            
            left = min(sdict.keys())
            right = max(sdict.keys())
            
            res = []
            for x in range(left, right + 1):
                if x in sdict.keys():
                    res.append([x, max(sdict[x])])
                else:
                    res.append([x, 0])
            
            
            res_ = []
            for i in range(1, len(res) - 1):
                res_.append(res[i-1])
                if res[i][0] != res[i-1][0] and res[i][1] != res[i-1][1]:
                    if res[i][1] > res[i-1][1]:
                        res_.append([res[i][0], res[i-1][1]])
                    else:
                        res_.append([res[i-1][0], res[i][1]])
            res_.append(res[-1])
            
            res = res_
            
            invalid_cord = []
            
            for x in range(1, len(res) -1):
                if res[x][1] == res[x-1][1] and res[x][1] == res[x+1][1]:
                    invalid_cord.append(res[x])
            
            res = [c for c in res if c not in invalid_cord]
            
            res = [[left, 0]] + res + [[right , 0]]
            
            print(res)
    
  • 相关阅读:
    RabbitMQ安装
    Redis安装
    spring boot 与 vue 配置 https
    JAVA 注解
    Java 获取两个日期之间的所有日期
    数组排序
    el-table表格高度自适应
    Windows使用Nexus搭建Maven私服
    SpringCloud 整合 Python
    SpringCloud 整合 Python
  • 原文地址:https://www.cnblogs.com/theodoric008/p/8684684.html
Copyright © 2011-2022 走看看