学习笔记 | 区间合并

区间合并是一种处理区间重叠的高效技术,常用于判断和合并有交集的区间。理解六个不同情况对于解决相关问题至关重要,如插入区间、优化合并等。在需要消除区间交集或处理重叠区间的问题时,此技术尤其适用。文中通过示例一和示例二进行详细解释。

区间合并

  • 区间合并模式是一个用来处理有区间重叠的很高效的技术。在涉及到区间的很多问题中,通常需要判断区间是否有重叠,重叠的话则合并区间。
  • 给两个区间a和b。它们之间的关系能跑出来6种情况:
  • 理解和识别这六种情况非常重要,这能帮你解决一大堆问题。
  • 这些问题从插入区间到优化区间合并都有。
识别什么时候用合并区间模式呢?
  • 当你需要产生一堆相互之间没有交集的区间的时候
  • 当你听到重叠区间的时候
举例

给出一个区间的集合,请合并所有重叠的区间。

示例一
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例二
输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
# Definition for an interval.
# class Interval(object):
#     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 len(intervals) <= 1:
            return intervals
        res = []
        intervals = sorted(intervals,key = lambda start: start[0])
        l = intervals[0][0]
        h = intervals[0][1]
        for i in range(1,len(intervals)):
            if intervals[i][0] <= h:
                h = max(h,intervals[i][1])
            else:
                res.append([l,h])
                l = intervals[i][0]
                h = intervals[i][1]
        res.append([l,h])
        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值