LeetCode-Insert Interval-插入时间段-遍历+条件判断

https://oj.leetcode.com/problems/insert-interval/

一道比较简单的题。主要就是扫描一段数组,看哪些时间段与目标时间段相交,相交的那些用来更新目标时间段。在相交结束时插入目标时间段。

需要注意的是目标时间出现在两个时间段中间的情况,哪个都没有相交但是也需要插入。

/**
 * Definition for an interval.
 * struct Interval {
 *     int start;
 *     int end;
 *     Interval() : start(0), end(0) {}
 *     Interval(int s, int e) : start(s), end(e) {}
 * };
 */
class Solution {
public:
    int n,m;
    vector <int> v;
    bool Inter(Interval &t1,Interval &t2){
        if (t1.start>=t2.start && t1.start<=t2.end){
            return true;
        }
		if (t1.end>=t2.start && t1.end<=t2.end){
			return true;
		}
        return false;
    }
    vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
        m=intervals.size();
        
        vector<Interval> &a=intervals;
        int l=newInterval.start;
        int r=newInterval.end;
        vector <Interval> res;
        if (m==0) {
            res.push_back(newInterval);
            return res;
        }
        if (r<a[0].start){
            res.push_back(newInterval);
            for (int i=0;i<m;i++){res.push_back(a[i]);}
            return res;
        }
        if (l>a[m-1].end){
            res=a;
            res.push_back(newInterval);
            return res;
        }
        bool enter=false;
        for (int i=0;i<m;i++){
            if (Inter(a[i],newInterval)){
                enter=true;
                l=min(l,a[i].start);
                r=max(r,a[i].end);
            }
            else{
                if (enter){
                    res.push_back(Interval(l,r));
                    enter=false;
                    res.push_back(a[i]);
                }
                else{
                    res.push_back(a[i]);
                    if (i<m-1){
                        if (l>a[i].end && r<a[i+1].start){
                            res.push_back(newInterval);
                        }
                    }
                }
            }
        }
        if (enter) res.push_back(Interval(l,r));
        return res;
    }
};

  

posted @ 2014-10-06 17:06  zombies  阅读(235)  评论(0编辑  收藏  举报