【LeetCode 57】插入区间
【题解】
这题要分四种情况。
第一种。区间在所有区间的前面。
第二种。区间在所有区间的后面。
第三种。区间在某两个区间之间但是没有交集。
第四种。区间和某个区间产生了相交。
对于第四种枚举第一次产生相交的区间是哪一个。
然后往后尝试延伸。看看会不会合并更多区间。
【代码】
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】插入区间的更多相关文章
- Java实现 LeetCode 57 插入区间
57. 插入区间 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: inte ...
- LeetCode 57 插入区间
题目: 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: intervals ...
- leetcode刷题-57插入区间
题目 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入:intervals = ...
- leetcode Insert Interval 区间插入
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4051169.html 题目链接:leetcode Insert Interval 使用模拟 ...
- 【BZOJ】3065: 带插入区间K小值
http://www.lydsy.com/JudgeOnline/problem.php?id=3065 题意:带插入.修改的区间k小值在线查询.(原序列n<=35000, 询问<=175 ...
- lintcode:插入区间
题目: 插入区间 给出一个无重叠的按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 样例 插入区间[2, 5] 到 [ ...
- bzoj 3065: 带插入区间K小值 替罪羊树 && AC300
3065: 带插入区间K小值 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 1062 Solved: 253[Submit][Status] Des ...
- [LeetCode] 57. Insert Interval 解决思路
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- 合并区间 · Merge Intervals & 插入区间 · Insert Interval
[抄题]: 给出若干闭合区间,合并所有重叠的部分. 给出的区间列表 => 合并后的区间列表: [ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10] ...
- [BZOJ3065]带插入区间K小值 解题报告 替罪羊树+值域线段树
刚了一天的题终于切掉了,数据结构题的代码真**难调,这是我做过的第一道树套树题,做完后感觉对树套树都有阴影了......下面写一下做题记录. Portal Gun:[BZOJ3065]带插入区间k小值 ...
随机推荐
- Ntdll.h
转自:https://www.cnblogs.com/gwsbhqt/p/5092390.html 为了能使用上Ntdll.lib库函数,从几份不完整的Ntdll.h中拼凑整理出了比较完整美观的Ntd ...
- eclipse下实现热部署,tomcat不重新reload context
1. 打开server的编辑器 2. 在modules页签内,修改auto load属性为disabled
- TCP 为什么是三次握手,而不是两次或四次?
记得第一次看TCP握手连接的时候,有同样的疑问,我的疑问是,为何不是两次呢?后来随着对网络的理解深入,明白TCP报文是交由IP网络来负责运输,IP网络并不能保证TCP报文到达目的地,既然IP网络是指望 ...
- hdu6575Budget
Problem Description Avin’s company has many ongoing projects with different budgets. His company rec ...
- spring-第十篇之XML Schema的简化配置,p、c、util命名空间
1.p:命名空间 引入命名空间:xmlns:p="http://www.springframework.org/schema/p" 配置举例: <?xml version=& ...
- ExcelVBA 操作putty
Private Sub login(ip As String, userName As String, password As String) Dim TaskID As Long '设置进程id p ...
- 【五一qbxt】day5 图论
图论 学好图论的基础: 必须意识到图论hendanteng xuehuifangqi(雾 图 G = (V,E) 一般来说,图的存储难度主要在记录边的信息 无向图的存储中,只需要将一条无向边拆成两条即 ...
- spring(四):spring中给bean的属性赋值
spring中给bean的属性赋值 xml文件properties标签设置 <bean id="student" class="com.enjoy.study.ca ...
- Springboot2.x整合SpringSecurity
一.Spring Security是什么?有什么作用(核心作用)?以及如何阅读本篇文章 1.是什么 Spring Security是Spring家族的一个强大的安全框架,与Springboot整合的比 ...
- go中基本数据类型的默认值
代码 // 基本数据类型(整型,浮点型,字符串型,布尔型)的默认值 package main import ( "fmt" ) func main() { var a int va ...