leetcode(34)优先队列系列题目
218. 天际线问题
用SortedList存边界,每次删除或加入边界判断最高点是否变化
class Solution:
def getSkyline(self, buildings: List[List[int]]) -> List[List[int]]:
from sortedcontainers import SortedList
change = []
for l, r, h in buildings:
change.append((l, -h))
change.append((r, h))
change.sort()
pre = 0
res = []
s = SortedList([0])
for i, h in change:
if h < 0:
s.add(h) # 存入左边界
else:
s.remove(-h) # 删除右边界
cur_mx = -s[0]
if cur_mx != pre: # 存入或删除边界后可能发生改变
pre = cur_mx
res.append((i, cur_mx))
return res
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示