#30 Insert Interval

原创 2016年08月29日 12:31:50

题目描述:

Given a non-overlapping interval list which is sorted by start point.

Insert a new interval into it, make sure the list is still in order and non-overlapping (merge intervals if necessary).

Example

Insert [2, 5] into [[1,2], [5,9]], we get [[1,9]].

Insert [3, 4] into [[1,2], [5,9]], we get [[1,2], [3,4], [5,9]].

题目思路:

这题很容易做着做着就晕了,关键是要条理清楚。步骤如下:

1. 把new interval加入到intervals的array中,然后把整个array的所有区间根据start来sort

2. 遍历这个sort过的区间集合。如果发现本区间和上一个区间有overlap(本区间的start在上一个区间中),那么就合并本区间和上一个区间;然后不断的check下一个区间,如果有overlap就再进行合并,直到没有overlap为止。

3. 把最终的区间写到ans中。

这里loop到最后时,对于最后一个区间需要take care一下。

Mycode(AC = 26ms):

/**
 * Definition of Interval:
 * class Interval {
 * public:
 *     int start, end;
 *     Interval(int start, int end) {
 *         this->start = start;
 *         this->end = end;
 *     }
 * }
 */
class Solution {
public:
    /**
     * Insert newInterval into intervals.
     * @param intervals: Sorted interval list.
     * @param newInterval: new interval.
     * @return: A new interval list.
     */
    vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
        // write your code here
        vector<Interval> ans;
        
        // sort the whole intervals according to start
        auto comp = [](const Interval& a, const Interval& b) {
            return a.start <= b.start;    
        };
        
        intervals.push_back(newInterval);
        sort(intervals.begin(), intervals.end(), comp);
        
        int len = intervals.size();
        for (int i = 1; i < len; i++) {
            // if interval i has overlap with interval i - 1, then
            // merge 2 intervals
            while (i < len && intervals[i].start <= intervals[i - 1].end) {
                intervals[i].start = intervals[i - 1].start;
                intervals[i].end = max(intervals[i].end, intervals[i - 1].end);
                i++;
            }
            ans.push_back(intervals[i - 1]);
            if (i >= len) return ans;
        }
        
        ans.push_back(intervals[len - 1]);
        return ans;
    }
};


版权声明:三千微尘里,吾宁爱与憎

leetCode 57.Insert Interval (插入区间) 解题思路和方法

Insert Interval  Given a set of non-overlapping intervals, insert a new interval into the interva...
  • xygy8860
  • xygy8860
  • 2015年07月15日 14:11
  • 670

【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】

【057-Insert Interval(插入区间)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a set of non-overlapping inte...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月31日 07:02
  • 1720

15.3—细节实现题—Insert Interval

描述 Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if nece...
  • seu_nuaa_zc
  • seu_nuaa_zc
  • 2017年08月12日 12:54
  • 147

Insert Interval (区间的覆盖合并) 【leetcode】

题目: Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if n...
  • zhang9801050
  • zhang9801050
  • 2013年09月20日 15:52
  • 2185

angular1.x---angular中清除定时器$interval,解决重复计算问题

用angular1.x版本做定时器的时候,需要用到内置对象'$interval',用到window原生的setInterval的时候不能及时更新数据,但是’$interval’定义的定时器却不像set...
  • Wbiokr
  • Wbiokr
  • 2017年04月06日 23:18
  • 2978

SQL解惑1——interval关键字用法 .

做个例子描述吧,也许更易于理解。 准备: 1.建表 create table INTERVAL_TEST (   t_id     INTEGER not null,  --纯id   t...
  • arenzhj
  • arenzhj
  • 2013年11月23日 15:54
  • 6787

RxJava 入门(四)-- interval()的坑

大部分的操作及代码都在我上一篇博客中,这一篇我就其中比较蛋疼的问题说一下转载自一页飘舟大神的博客,Rx博客很全1. Observable.interval()不起作用的解决办法在Eclipse下测试R...
  • u011033906
  • u011033906
  • 2017年03月02日 23:27
  • 1658

Insert Interval区间插入题型求解 C实现

题目描述 分析 该题并不像其标签‘difficult’一样的难,其实就是一个对集合(区间)取并集的操作。 插入了一个新区间来取并集,关键就在于判断出原区间集中受新区间的覆盖影响情况以及确切的起始结...
  • DoWhatIWant_comeon
  • DoWhatIWant_comeon
  • 2017年03月26日 21:30
  • 113

RxJava2 / RxAndroid2操作符interval:每隔若干时间发射信号

RxJava2 / RxAndroid2操作符interval:每隔若干时间发射信号Interval每隔一定时间发射一个整数,从0开始,例如:package zhangphil.app; impor...
  • zhangphil
  • zhangphil
  • 2017年05月18日 17:12
  • 2316

android系统中wifi省电模式下的四个基本概念:TIM、DTIM、Beacon-Interval、Listen-Interval

1、TIM(traffic indication message)     每一个Beacon的帧中都有一个TIM信息 ,它主要用来由AP通告它管辖下的哪个STA有信息现在缓存在AP 中,而在T...
  • hengkong_horse
  • hengkong_horse
  • 2013年04月15日 21:21
  • 7170
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#30 Insert Interval
举报原因:
原因补充:

(最多只允许输入30个字)