• leetcode 区间合并


    个区间若能合并,则第一个区间的右端点一定不小于第二个区间的左端点。所以先把区间集合按照左端点从小到大进行排序,接着从第一个区间开始遍历,对每个区间执行如下操作:

    1.首先保存该区间的左端点start和右端点end;

    2.从该区间的下一个区间开始,依次比较此区间的左端点与上一个区间的右端点,若满足合并条件则记录新合并区间的右端点。注意右端点取当前区间与之前区间右端点的较大值;

    3.若当前区间不再满足合并条件或者遍历到了集合末尾,就构建新合并区间,其中左端点为初始区间的左端点,右端点为当前所有合并区间右端点的最大值,然后将其加入到结果集合中,接着合并下一个区间;

    # Definition for an interval.
    # class Interval:
    #     def __init__(self, s=0, e=0):
    #         self.start = s
    #         self.end = e
    
    class Solution(object):
        def merge(self, intervals):
            """
            :type intervals: List[Interval]
            :rtype: List[Interval]
            """
            if intervals == []:
                return []
            intervals = sorted(intervals,key=lambda x:x.start)
            res = []
            tmp = intervals[0]
            for i in range(1,len(intervals)):
                if tmp.end >= intervals[i].start:
                    tmp.end = max(tmp.end,intervals[i].end)
                else:
                    res.append(tmp)
                    tmp = intervals[i]
            res.append(tmp)
            return res
  • 相关阅读:
    HTTP/2的优先级
    JavaScript 日期权威指南
    岂曰无衣与子同袍
    Android项目中实现native调用
    关键渲染路径
    @ModelAttribute使用详解
    @SessionAttribute使用详解
    @ControllerAdvice 拦截异常并统一处理
    js获取文件MD5值
    Mybatis分页插件PageHelper的配置和使用方法
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/10635293.html
Copyright © 2020-2023  润新知