Insert Interval
来源:互联网 发布:php 文件上传类 编辑:程序博客网 时间:2024/05/17 01:32
AC
vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) { if(intervals.empty()) { intervals.push_back(newInterval); return intervals; } vector<int> val; for(int i=0;i < intervals.size();++i){val.push_back(intervals[i].start); val.push_back(intervals[i].end); }int st=0;int ed=0;int m=0;int n=val.size()-1;int s_flag=0;int e_flag=0;while(m < val.size() && n >= 0){if(val[m] >= newInterval.start && s_flag == 0){st=m;//记录端点s_flag=1;}if(val[n] <= newInterval.end && e_flag == 0){ed=n;e_flag=1;}++m;--n;} if(s_flag == 0) { intervals.push_back(newInterval); return intervals; } if(s_flag == 1 && e_flag ==1)////根据左右端点进行区分 { if(st%2 == 0 && ed%2 == 0) { vector<Interval> tmp; for(int i=0;i < st/2;++i) { tmp.push_back(intervals[i]); } Interval nInterval(newInterval.start,val[ed+1]); tmp.push_back(nInterval); for(int i=ed/2+1;i < intervals.size();++i) { tmp.push_back(intervals[i]); } return tmp; } if(st%2 == 0 && ed%2 == 1) { vector<Interval> tmp; for(int i=0;i < st/2;++i) { tmp.push_back(intervals[i]); } Interval nInterval(newInterval.start,newInterval.end); tmp.push_back(nInterval); for(int i=(ed+1)/2;i < intervals.size();++i) { tmp.push_back(intervals[i]); } return tmp; } if(st%2 == 1 && ed%2 == 0) { vector<Interval> tmp; for(int i=0;i < (st-1)/2;++i) { tmp.push_back(intervals[i]); } Interval nInterval(val[st-1],val[ed+1]); tmp.push_back(nInterval); for(int i=ed/2+1;i < intervals.size();++i) { tmp.push_back(intervals[i]); } return tmp; } if(st%2 == 1 && ed%2 == 1) { vector<Interval> tmp; for(int i=0;i < (st-1)/2;++i) { tmp.push_back(intervals[i]); } Interval nInterval(val[st-1],newInterval.end); tmp.push_back(nInterval);for(int i=(ed+1)/2;i < intervals.size();++i) { tmp.push_back(intervals[i]); } return tmp; } } if(e_flag ==0) { intervals.insert(intervals.begin(),newInterval); return intervals; }}
0 0
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- 缓慢变化思想8
- 中级软件设计师考试---流水线详解
- 质量好能否一定会让客户满意需了解国际度量衡知识
- 缓慢变化思想9
- 为什么变量前要加下划线才有用?
- Insert Interval
- Ubuntu 下安装postfix 配置
- 计算机视觉方向的一些顶级会议和期刊
- easyui 一些使用技巧
- Struts2基础之文件上传
- leetcode 1 Two Sum
- IOS视图生命周期
- Autolayout 下的 Animation
- mysql更改数据文件目录及my.ini位置。