区间问题

应用

应用1:Leetcode.56

题目

算法步骤:

  • 先将时间段按照起始时间升序,结束时间降序排序

  • results 保存合并后的结果,并保存所有时间段中的第一个,并以其作为基准;

  • 遍历所有的时间段:

    • 如果当前区间的起始时间小于等于,results 中最后一个区间的结束时间,则更新其结束时间(做合并操作);

    • 否则,就保持当前时间段作为结果。

代码实现

class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
# 将时间段按照起始时间升序,结束时间降序排序
intervals.sort(key = lambda x : (x[0], -x[1]))
# 保存合并后的结果
results = list()
# 以第一个时间段作为基准
results.append(intervals[0])
for interval in intervals[1:]:
# 当前区间的起始时间小于等于,上一个合并后的区间的结束时间,则更新其结束时间
if interval[0] <= results[-1][1]:
results[-1][1] = max(results[-1][1], interval[1])
# 否则就直接保存该时间段
else:
results.append(interval)
return results

本文作者:LARRY1024

本文链接:https://www.cnblogs.com/larry1024/p/17684374.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   LARRY1024  阅读(16)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.