Insert Interval
Question
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]
.
Analysis
设newInterval的起止为low和high
- 对于集合中所有end小于low的区间直接加入res中
- 集合中start小于等于low的属于可以归并的区间,则一直循环下去并始终取最小为下届,最大为上届(newInterval的),直到start>low,将最终的 newInterval加入res
- 剩余的区间直接加入res
Code
|
|
Merge Intervals
Question
Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18]
,
return [1,6],[8,10],[15,18]
.
Analysis
重点是要对现有的序列以start从小到大排序
将第一个区间的上下界设为low,high,分为两种情况:
- high<当前区间的start,代表无重合部分,直接将区间[low,high]加入res,并且以当前区间的上下界更新low,high
- high≥当前区间的start,区间有重合,取两者较大的上界为high,继续对比
Code
|
|