LeetCode-----57. Insert Interval(数组插入并重新合并)
2016-11-04 21:01
302 查看
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
as
Example 2:
Given
as
This is because the new interval
Subscribe to see which companies asked this question
/**
* Definition for an interval.
* public class Interval {
* int start;
* int end;
* Interval() { start = 0; end = 0; }
* Interval(int s, int e) { start = s; end = e; }
* }
*/
public class Solution {
public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
if (newInterval == null || intervals == null) {
return intervals;
}
List<Interval> results = new ArrayList<Interval>();
int insertPos = 0;
for (Interval interval : intervals) {
if (interval.end < newInterval.start) {
results.add(interval);
insertPos++;
} else if (interval.start > newInterval.end) {
results.add(interval);
} else {
newInterval.start = Math.min(interval.start, newInterval.start);
newInterval.end = Math.max(interval.end, newInterval.end);
}
}
results.add(insertPos, newInterval);
return results;
}
}
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].
Subscribe to see which companies asked this question
/**
* Definition for an interval.
* public class Interval {
* int start;
* int end;
* Interval() { start = 0; end = 0; }
* Interval(int s, int e) { start = s; end = e; }
* }
*/
public class Solution {
public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
if (newInterval == null || intervals == null) {
return intervals;
}
List<Interval> results = new ArrayList<Interval>();
int insertPos = 0;
for (Interval interval : intervals) {
if (interval.end < newInterval.start) {
results.add(interval);
insertPos++;
} else if (interval.start > newInterval.end) {
results.add(interval);
} else {
newInterval.start = Math.min(interval.start, newInterval.start);
newInterval.end = Math.max(interval.end, newInterval.end);
}
}
results.add(insertPos, newInterval);
return results;
}
}
相关文章推荐
- leetcode之数组类之区间类-----OJ 56/57/435/239 重叠区间个数 合并区间 插入区间 滑动窗口最大值
- [LeetCode] 57. Insert Interval 插入区间
- LeetCode 57. Insert Interval(插入区间)
- leetcode之数组类之数组的旋转与分治类-----OJ 189/33/81/153/154 数组旋转 旋转数组搜索 88 有序数组合并 4 两个有序数组寻找第K个元素/中位数 35 寻找插入位置
- LeetCode 57. Insert Interval(插入区间)
- LeetCode --两个排序数组合并问题
- [leetcode] 区间合并问题 Merge Interval
- leetcode:Merge Sorted Array (合并排好序的数组)
- [LeetCode]—Search Insert Position 有序数组中找目标插入的位置
- 【LeetCode】Merge Sorted Array ---合并数组
- leetCode 88.Merge Sorted Array (合并排序数组) 解题思路和方法
- LeetCode Merge Sorted Array 合并已排序的数组
- 【leetcode】Merge Sorted Array(合并两个有序数组到其中一个数组中)
- [LeetCode] Insert Interval 插入区间
- [leetcode]Merge Sorted Array (两个有序数组的合并 C语言实现)
- LeetCode Merge Two Sorted Lists && 基础算法-合并有序数组
- OJ数组之在一组从小到大的数列中插入一个数后的重新排序
- 数据结构与算法[LeetCode]—两个有序数组合并及找中点问题
- leetcode:Merge Sorted Array(合并两个有序数组到其中一个数组中)【面试算法题】
- 【LeetCode】- Merge Sorted Array (合并有序数组).