leetcode_question_57 Insert Interval
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:
vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<Interval>::iterator itstart=intervals.begin();
for(; itstart!=intervals.end(); ++itstart)
if((*itstart).start <= newInterval.start && newInterval.start <= (*itstart).end)
break;
vector<Interval>::iterator itend=intervals.begin();
for(; itend!=intervals.end(); ++itend)
if((*itend).start <= newInterval.end && newInterval.end <= (*itend).end)
break;
if(itstart!=intervals.end() && itend!=intervals.end())
{
if(itstart != itend)
{
(*itstart).end = (*itend).end;
int tmp = (*itstart).end;
itstart++;
while(itstart != intervals.end())
if((*itstart).start <= tmp)
itstart = intervals.erase(itstart);
else break;
}
return intervals;
}else if(itstart==intervals.end() && itend!=intervals.end())
{
(*itend).start = newInterval.start;
int tmp1 = (*itend).start;
int tmp2 = (*itend).end;
itstart = intervals.begin();
while((*itstart).start != tmp1 && (*itstart).end != tmp2)
if((*itstart).start >= tmp1 && (*itstart).end <= tmp2)
itstart = intervals.erase(itstart);
else ++itstart;
return intervals;
}else if(itstart!=intervals.end() && itend==intervals.end())
{
(*itstart).end = newInterval.end;
int tmp = newInterval.end;
++itstart;
while(itstart != intervals.end())
if((*itstart).start < tmp)
itstart = intervals.erase(itstart);
else break;
return intervals;
}else{
vector<Interval>::iterator it=intervals.begin();
for(; it!=intervals.end(); ++it)
if((*it).start > newInterval.start)
break;
//--it;
vector<Interval>::iterator it1 = intervals.insert(it,newInterval);
while(it1 != intervals.end())
{
if((*it1).end < newInterval.end)
it1 = intervals.erase(it1);
else
it1++;
}
return intervals;
}
}
};
leetcode_question_57 Insert Interval的更多相关文章
- 【leetcode】Insert Interval
Insert Interval Given a set of non-overlapping intervals, insert a new interval into the intervals ( ...
- 60. Insert Interval && Merge Intervals
Insert Interval Given a set of non-overlapping intervals, insert a new interval into the intervals ( ...
- 【题解】【区间】【二分查找】【Leetcode】Insert Interval & Merge Intervals
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- leetcode Insert Interval 区间插入
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4051169.html 题目链接:leetcode Insert Interval 使用模拟 ...
- [OJ] Insert Interval
LintCode #30. Insert Interval (Easy) LeetCode #57. Insert Interval (Hard) class Solution { public: v ...
- [Swift]LeetCode57. 插入区间 | Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- 【LeetCode】57. Insert Interval
Insert Interval Given a set of non-overlapping intervals, insert a new interval into the intervals ( ...
- Leetcode: Merge/Insert Interval
题目 Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[ ...
- [LeetCode] Merge Interval系列,题:Insert Interval,Merge Intervals
Interval的合并时比较常见的一类题目,网上的Amazon面经上也有面试这道题的记录.这里以LeetCode上的例题做练习. Merge Intervals Given a collection ...
随机推荐
- HTML基础总结<头部>
重点摘录:HTML head 元素 标签 描述 <head> 定义了文档的信息 <title> 定义了文档的标题 <base> 定义了页面链接标签的默认链接地址 & ...
- VS 的winform中生成release模式
我试过,直接在项目的"Properties"中,修改"Build"标签的"Configuration"还不行.因为之前将不常用的工具栏隐藏了 ...
- Swift 循环、数组 字典的遍历
import Foundation // 数组声明 var arr = [String]() // 数组循环添加项 ...{ arr.append("Item \(index)") ...
- java文件io过滤器
package cn.stat.p1.file; import java.io.File; public class newfilelist { /** * @param args */ public ...
- jq:get获取json数据并以表格形式生成到页面
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- css3中的提供的元素变化属性
通过 CSS3 提供的2d元素转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. css3中为我们 提供了: translate() rotate() scale() skew() matrix( ...
- php代码生成二维码
//引用范例 1 public function index() { 2 echo "<img src='http://qr.liantu.com/api.php?bg=f3f3f3& ...
- JS通用表单验证函数,基于javascript正则表达式
表单的验证在实际的开发当中是件很烦琐又无趣的事情今天在做一个小项目的时候,需要JS验证,寻找到一个比较好的东西 地址如下: http://blog.csdn.net/goodfunman/archiv ...
- PHP根据概率产生随机数
假设 有四个选项:a 占 10%,b占20% ,C占30% , d 占 40% ,原理就是现获取随机数,然后找区间.当然了,选项的数量可以任意.目前默认是 总和是 100% .如果需要别的数,修改 随 ...
- Python新手学习基础之条件语句——if/else语句
if/else语句 条件语句实际在前面的文章里我们已经使用过几次了,在这里我们需要再次隆重的来介绍一下它,条件语句是通过对一条或多条语句判断的返回结果(True或False)来选择执行下一步命令的,比 ...