python 实现区间合并算法

区间合并,是指将若干个有交集的区间合并为 1 个区间。

def merge_intervals(intervals):
    # 排序
    intervals = sorted(intervals, key=lambda x: x[0])
    merged = []
    for interval in intervals:
        # 如果当前区间和上一个区间有重叠,合并两个区间
        if merged and interval[0] <= merged[-1][1]:
            merged[-1][1] = max(merged[-1][1], interval[1])
        # 如果当前区间和上一个区间没有重叠,将当前区间加入结果列表
        else:
            merged.append(interval)
    return merged

intervals = [[1, 3], [2, 6], [8, 10], [15, 18]]
merged_intervals = merge_intervals(intervals)
print(merged_intervals)
#输出[[1, 6], [8, 10], [15, 18]]

流程如下:

  1. 首先将输入的区间列表按照区间起点从小到大排序。
  2. 遍历排序后的区间列表,对于每个区间,如果它和上一个区间有重叠,那么将两个区间合并;如果它和上一个区间没有重叠,那么将当前区间加入结果列表。
  3. 最后返回合并后的区间列表。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值