Leetcode -- Insert Interval
来源:互联网 发布:淘宝卖家怎么用淘宝客推广 编辑:程序博客网 时间:2024/05/18 04:52
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]
.
分析:
先查找重合的部分,确定交叠的左右边界,这时有3种可能:
1. left>right,说明没有查找到,直接插入;
2. left==right,这时只需要融合,不需要删除;
3. left<right,这时需要融合之后删除多余的区间。
注意STL中vector.erase函数在使用时输入的两个边界,其中左边界是需要删除的第一个位置,右边界是需要删除的最后一个位置的下一个位置。
/** * 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) { int n=intervals.size(),x=newInterval.start,y=newInterval.end,left=0,right=n-1; for(left=0;left<n;++left) if(x<=intervals[left].end) break; for(right=n-1;right>=0;--right) if(y>=intervals[right].start) break; if(left>right)//not found { intervals.push_back(newInterval); for(int i=n;i>right+1;--i) { intervals[i].start=intervals[i-1].start; intervals[i].end=intervals[i-1].end; } intervals[right+1].start=x; intervals[right+1].end=y; } else { intervals[left].start=min(x,intervals[left].start); intervals[left].end=max(y,intervals[right].end); if(right>left) intervals.erase(next(intervals.begin(),left+1),next(intervals.begin(),right+1)); } return intervals; }};
0 0
- LeetCode: Insert Interval & Merge Interval
- LeetCode题目 Insert Interval
- LeetCode: Insert Interval
- LeetCode Insert Interval
- LeetCode: Insert Interval
- Leetcode: Insert Interval
- [LeetCode] Insert Interval
- LeetCode Insert Interval
- [LeetCode]Insert Interval
- leetcode insert interval
- [leetcode]Insert Interval
- LeetCode-Insert Interval
- [leetcode] Insert Interval
- LeetCode - Insert Interval
- 【leetcode】Insert Interval
- leetcode Insert Interval
- 【leetcode】Insert Interval
- LeetCode Insert Interval
- IntelliJ Idea 常用快捷键列表
- 【web】项目中如何获取ip地址和端口号
- SharePoint 2010 IT Professional -- Recycle Bin
- linux c 字符串到time_t时间转换
- Android面试题
- Leetcode -- Insert Interval
- 用Picasso的RequestHandler进行自定义加载的方法
- QT5入门之18 -文件读写
- Newtonsoft.Json解析数组的小例子
- leetcode 268 : Missing Number
- mysql导入csv格式数据
- yaw roll pitch matrix
- IO - 同步,异步,阻塞,非阻塞
- 数据库:替代变量笔记