您的位置:首页 > 其它

Leetcode 57. Insert Interval

2016-04-29 16:26 399 查看

问题

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

解法

要插入的段 newInterval 与原有的intervals 会相互重叠一部分。

首先找到重叠的左右边界,插入即可。

/**
* 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:
vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {
vector<Interval> ret;
int i=0;
for (; i<intervals.size() && intervals[i].end < newInterval.start; ++i )// 前面不相交
ret.push_back(intervals[i]);
if (i <intervals.size()) // 可能没有相交部分
newInterval.start = min(newInterval.start, intervals[i].start);
for (; i<intervals.size() && intervals[i].start <= newInterval.end; ++i)//处理相交部分
newInterval.end = max(newInterval.end, intervals[i].end);
ret.push_back(newInterval); //插入新段
for (; i<intervals.size(); ++i)// 之后不相交部分
ret.push_back(intervals[i]);
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: