您的位置:首页 > 其它

leetcode - Insert Interval

2013-04-19 11:04 281 查看
题目描述:点击此处

/**
* 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) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int maxN = 1000000000;
vector<Interval> rlt;
if (intervals.empty()){
rlt.push_back(newInterval);
return rlt;
}
intervals.push_back(newInterval);
vector<Interval>::iterator vi;
vector<Interval>::iterator pos =intervals.end()-1;
for (vi=intervals.end()-1-1; vi+1!=intervals.begin(); vi--){
if ((*vi).start>(*(vi+1)).start){
pos = vi;
Interval tmp = * vi;
*vi = *(vi+1);
*(vi+1) = tmp;
}
}
for (vi = pos-1; vi+1!=intervals.begin(); vi--){
if ( (*vi).end>=(*pos).start ){
(*pos).start = (*vi).start;
(*pos).end = (*pos).end > (*vi).end ? (*pos).end : (*vi).end;
(*vi).start = maxN;
}
else break;
}
for (vi = pos+1; vi!=intervals.end(); vi++){
if ( (*vi).start<=(*pos).end ){
(*pos).end = (*pos).end > (*vi).end ? (*pos).end : (*vi).end;
(*vi).start = maxN;
}
else break;
}
for (vi = intervals.begin(); vi!=intervals.end(); vi++){
if ((*vi).start != maxN)
rlt.push_back(*vi);
}
return rlt;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: