Leetcode 57 Insert Interval
来源:互联网 发布:活动报名网站源码 编辑:程序博客网 时间:2024/05/20 22:38
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).
You may assume that the intervals were initially sorted according to their start times.
Example 1:
Given intervals [1,3],[6,9]
, insert and merge [2,5]
in as [1,5],[6,9]
.
Example 2:
Given [1,2],[3,5],[6,7],[8,10],[12,16]
, insert and merge [4,9]
in as [1,2],[3,10],[12,16]
.
This is because the new interval [4,9]
overlaps with [3,5],[6,7],[8,10]
.
有一个偷懒的方法,把新区间加进去,利用上一题的合并重叠区间合并。
然而为了显示强大的基本功,我作死写模拟了,结果就是真的各种没有想到的情况。
/** * 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: static bool cmp(const struct Interval &a,const struct Interval &b) { if(a.start!=b.start) return a.start<b.start; return a.end<b.end; } vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) { vector<Interval> result; sort(intervals.begin(),intervals.end(),cmp); int flag=0; //表示插入区间是否加入 for(int i=0;i<intervals.size();i++) { if(flag) result.push_back(intervals[i]); //已插入 else { if(newInterval.end<intervals[i].start) //插入区间在第一个并且和其他区间没有交集 { flag=1; result.push_back(newInterval); result.push_back(intervals[i]); } else { if(newInterval.start<=intervals[i].end) // 有交集 { flag=1; intervals[i].start=min(intervals[i].start,newInterval.start); intervals[i].end=max(intervals[i].end,newInterval.end); int jump=1; while(i+jump<intervals.size() && intervals[i+jump].start<=intervals[i].end)//合并后续区间 { intervals[i].end=max(intervals[i].end,intervals[i+jump].end); jump++; } result.push_back(intervals[i]); i+=jump-1; } else result.push_back(intervals[i]);//无交集 } } } if(!flag) result.push_back(newInterval);//未插入区间 return result; }};
1 0
- leetcode || 57、Insert Interval
- Leetcode#57||Insert Interval
- leetcode 57: Insert Interval
- leetcode 57:Insert Interval
- LeetCode 57 - Insert Interval
- Leetcode 57 Insert Interval
- LeetCode #57: Insert Interval
- Leetcode 57 Insert Interval
- Leetcode 57 Insert Interval
- LeetCode 57 Insert Interval
- LeetCode 57 --- Insert Interval
- leetcode-57 insert interval
- LeetCode #57 | Insert Interval
- LeetCode 57 Insert Interval
- [Leetcode 57, Hard] Insert Interval
- [leetcode-57]Insert Interval(java)
- LeetCode(57) Insert Interval
- LeetCode-57-Insert Interval 水
- Android复习-Java基础(1)
- HDU5900-QSC and Master
- MyBatis获取插入记录的自增长字段值
- hdu 5886 Tower Defence 2016ACM/ICPC青岛赛区网络赛1009
- 决策树与随机森林相关概念
- Leetcode 57 Insert Interval
- 保存Word
- 顺序表(135)
- Android Service与Activity之间通信的几种方式
- Android控件
- 数据库基础——第一天
- Android 四大组件 Service 服务
- 不同浏览器keyCode
- 简单的OkHttp使用介绍