leetcode-057 Insert Interval

问题描述:已知一串已排好序的无重叠的区间,先插入一个新区间[a,b],要求输出merge后无重叠的区间集

Example 1:
Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9].

Example 2:
Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].

This is because the new interval [4,9] overlaps with [3,5],[6,7],[8,10].

解题思路:遍历旧区间,看每一个区间是否和插入区间有交集,修改旧区间后变成056.

特殊情况:旧区间为空;旧区间[1,4],插入[1,4];插入的区间与旧区间不重叠,需要在旧区间集上加入新区间

用时:50min


思路修改:先将旧区间中不与新区间[c,d]重叠且位于新区间左侧的区间放入vector left中,不与新区间重叠且位于新区间右侧的区间放入vector right中。若两个vector加起来的数量不等于旧区间的数量则表示存在于新区间重叠的区间,则这部分区间可合并为[c',d'],其中c'=min{c, intervals[left.size()].start}  d' = max{d, intervals[intervals.size() - right,size() - 1].end}

所以输出区间应为left,[c',d'],right

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值