题目链接

【题解】

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

【代码】

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;
}
};

最新文章

  1. Android 多线程----AsyncTask异步任务详解
  2. HDU 1754 I Hate It(线段树单点更新区间最值查询)
  3. Delphi如何打开DBF数据库
  4. HTTP权威指南学习心得
  5. hdu 4599 Dice 概率DP
  6. TCP/IP详解学习笔记(9)-TCP协议概述
  7. mongodb教程二
  8. &lt;PHP&gt;字符串处理代码
  9. 浅析libev的ev_signal过程
  10. (转)DataTable添加行出现“该行已经属于另一个表”的错误!
  11. JBoss + EJB3 + MySql : 开发第一个EJB
  12. MySQL中binlog参数:binlog_rows_query_log_events
  13. 小z的袜子
  14. CentOS7上安装并配置Nginx、PHP、MySql
  15. MSQL基本增删改语句汇总练习
  16. mysql limit 性能问题分析
  17. [ExcelHome]VLOOKUP的别样用法
  18. SQL 必知必会&#183;笔记&lt;3&gt;过滤数据
  19. nrf24l01 IRQ一直为高电平
  20. CSS矩形盒子的四个边界

热门文章

  1. day31—CSS Reset 与页面居中布局
  2. 第1 章 mysql数据库之简单的DDL和DML sql语句
  3. (appium+python)UI自动化_09_unittest批量运行测试用例&amp;生成测试报告
  4. Recurrent Neural Network(1):Architecture
  5. springboot异步任务、定时任务
  6. ASP精华[转]
  7. [暑假集训Day1T2]北极通讯网络
  8. NavBarControl控件 2015-07-23 16:56 2人阅读 评论(0) 收藏
  9. 【学习总结】Python-3-转义字符
  10. django框架常用的数据库迁移命令