题目链接

【题解】

这题要分四种情况。
第一种。区间在所有区间的前面。
第二种。区间在所有区间的后面。
第三种。区间在某两个区间之间但是没有交集。
第四种。区间和某个区间产生了相交。
对于第四种枚举第一次产生相交的区间是哪一个。
然后往后尝试延伸。看看会不会合并更多区间。

【代码】

class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
vector<vector<int>> ans;ans.clear();
vector<int> temp;temp.resize(2);
int len = intervals.size();
//在所有区间前面
if (!intervals.empty() && newInterval[1]<intervals[0][0]){
ans.push_back(newInterval);
for (int i = 0;i<len;i++) ans.push_back(intervals[i]);
return ans;
}
//在区间之间但是没有交集。
for (int i = 0;i < len-1;i++){
ans.push_back(intervals[i]);
if (intervals[i][1]<newInterval[0] &&
newInterval[1]<intervals[i+1][0]){
ans.push_back(newInterval);
for (int j = i+1;j<len;j++){
ans.push_back(intervals[j]);
}
return ans;
}
}
ans.clear();
//区间和某些原来的区间产生了交集。
for (int i = 0;i < len;i++){
if (intervals[i][1]>=newInterval[0]){
int l = min(intervals[i][0],newInterval[0]);
int r = max(intervals[i][1],newInterval[1]);
while (i+1<len && intervals[i+1][0]<=r){
r = max(r,intervals[i+1][1]);
i++;
}
temp[0] = l;temp[1] = r;
ans.push_back(temp);
for (int j = i+1;j<len;j++) ans.push_back(intervals[j]);
return ans;
}else{
temp = intervals[i];
ans.push_back(temp);
}
}
ans.push_back(newInterval);
return ans;
}
};

【LeetCode 57】插入区间的更多相关文章

  1. Java实现 LeetCode 57 插入区间

    57. 插入区间 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: inte ...

  2. LeetCode 57 插入区间

    题目: 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: intervals ...

  3. leetcode刷题-57插入区间

    题目 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入:intervals = ...

  4. leetcode Insert Interval 区间插入

    作者:jostree  转载请注明出处 http://www.cnblogs.com/jostree/p/4051169.html 题目链接:leetcode Insert Interval 使用模拟 ...

  5. 【BZOJ】3065: 带插入区间K小值

    http://www.lydsy.com/JudgeOnline/problem.php?id=3065 题意:带插入.修改的区间k小值在线查询.(原序列n<=35000, 询问<=175 ...

  6. lintcode:插入区间

    题目: 插入区间 给出一个无重叠的按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 样例 插入区间[2, 5] 到 [ ...

  7. bzoj 3065: 带插入区间K小值 替罪羊树 && AC300

    3065: 带插入区间K小值 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 1062  Solved: 253[Submit][Status] Des ...

  8. [LeetCode] 57. Insert Interval 解决思路

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...

  9. 合并区间 · Merge Intervals & 插入区间 · Insert Interval

    [抄题]: 给出若干闭合区间,合并所有重叠的部分. 给出的区间列表 => 合并后的区间列表: [ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10] ...

  10. [BZOJ3065]带插入区间K小值 解题报告 替罪羊树+值域线段树

    刚了一天的题终于切掉了,数据结构题的代码真**难调,这是我做过的第一道树套树题,做完后感觉对树套树都有阴影了......下面写一下做题记录. Portal Gun:[BZOJ3065]带插入区间k小值 ...

随机推荐

  1. 不缓存JS

    方法一:告诉浏览器不要缓存(不一定好使) <meta http-equiv="Pragma" content="no-cache"> <met ...

  2. delphi idhttpserver 服务器

    [冒泡]lazarus(964489899) 10:01:27 哥 能复制成 字符串吗?   [冒泡]lazarus(964489899) 10:01:44 我想快速输入一下   [传说]CHINY( ...

  3. 06 案例篇:系统的 CPU 使用率很高,但为啥却找不到高 CPU 的应用?

    上一节我讲了 CPU 使用率是什么,并通过一个案例教你使用 top.vmstat.pidstat 等工具,排查高 CPU 使用率的进程,然后再使用 perf top 工具,定位应用内部函数的问题.不过 ...

  4. Bootstrap 学习笔记12 轮播插件

    轮播插件: <!-- data-ride="carousel"自动播放 --> <div id="myCarousel" class=&quo ...

  5. [Linux] 012 文件搜索命令

    文件搜索命令:find 命令名称:find 命令所在路径:/bin/find 执行权限:所有用户 语法:find [搜索范围] [匹配条件] 功能描述:文件搜索 范例: 在目录 /etc 中查找文件 ...

  6. [Bzoj1008][HNOI2008]越狱(组合计数)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1008 组合计数的简单题,可能越狱的方案数等于总方案数-不可能越狱的方案数,则: 总方案数 ...

  7. jar包 war包

    jar包和war包的区别: war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块.而jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令 ...

  8. C# form 传参数的几个方法

    方法一:传值最先想到的,Form2构造函数中接收一个string类型参数,即Form1中选中行的文本,将Form2的TextBox控件的Text设置为该string,即完成了Form1向Form2的传 ...

  9. 20180209-json&pickle&shelve模块

    什么是序列化? 序列化就是把内存里的数据类型转成字符串,以使其能够存储到硬盘中或在网络中传输到远程,因为硬盘和网络传输时只接收bytes 用于序列化的两个模块 1. json,用于字符串和python ...

  10. linux性能分析工具Ntop