区间问题
应用
应用1:Leetcode.56
题目
算法步骤:
-
先将时间段按照起始时间升序,结束时间降序排序
-
用
保存合并后的结果,并保存所有时间段中的第一个,并以其作为基准; -
遍历所有的时间段:
-
如果当前区间的起始时间小于等于,
中最后一个区间的结束时间,则更新其结束时间(做合并操作); -
否则,就保持当前时间段作为结果。
-
代码实现
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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步