[LeetCode][Java] Insert Interval
来源:互联网 发布:淘宝卖家怎样设置客服 编辑:程序博客网 时间:2024/06/11 15:14
题目:
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]
.
题意:
给定一组不互相覆盖的间隔数,将一个新的间隔数插入到他们之中(如果必要的话进行合并).
你可以假设这些间隔数起初是根据他们的起始数排好序的.
样例1:
给定[1,3],[6,9],插入并合并[2,5]
得到[1,5],[6,9]
.
样例2:
给定[1,2],[3,5],[6,7],[8,10],[12,16]
,插入并合并[4,9]
得到 [1,2],[3,10],[12,16]
.
这是因为新的间隔数[4,9]
覆盖了[3,5],[6,7],[8,10]
.
算法分析:
* 结合方法《Merge Intervals》
* 新加入 newInterval ,重新排序后然后按照上面的方法就好
AC代码:
<span style="font-size:12px;">public class Solution { public List<Interval> insert(List<Interval> intervals, Interval newInterval) { intervals.add(newInterval); if (intervals == null || intervals.size() <= 1) return intervals; return merge(intervals); } public static List<Interval> merge(List<Interval> intervals) { if (intervals == null || intervals.size() <= 1) return intervals; // sort intervals by using self-defined Comparator Collections.sort(intervals, new IntervalComparator()); ArrayList<Interval> result = new ArrayList<Interval>(); Interval prev = intervals.get(0); for (int i = 1; i < intervals.size(); i++) { Interval curr = intervals.get(i); if (prev.end >= curr.start) { // merged case Interval merged = new Interval(prev.start, Math.max(prev.end, curr.end)); prev = merged; } else { result.add(prev); prev = curr; } } result.add(prev); return result; }}class IntervalComparator implements Comparator<Interval>{ public int compare(Interval i1, Interval i2) { return i1.start - i2.start; }}</span>
- [Leetcode] Insert Interval (Java)
- [LeetCode][Java] Insert Interval
- [leetcode-57]Insert Interval(java)
- 57. Insert Interval-leetcode-java
- (Java)LeetCode-57. Insert Interval
- [leetcode]57. Insert Interval(Java)
- Leetcode 57. Insert Interval (Medium) (java)
- LeetCode: Insert Interval & Merge Interval
- LeetCode题目 Insert Interval
- LeetCode: Insert Interval
- LeetCode Insert Interval
- LeetCode: Insert Interval
- Leetcode: Insert Interval
- [LeetCode] Insert Interval
- LeetCode Insert Interval
- [LeetCode]Insert Interval
- leetcode insert interval
- [leetcode]Insert Interval
- Adobe Flash Player 因过期而遭到阻止的解决办法
- opencv 学习记录(1)Mat IpImage
- c语言中的有符号数和无符号数
- WebService大讲堂之Axis2(6):跨服务会话(Session)管理
- 网址信息
- [LeetCode][Java] Insert Interval
- HDU 2154 跳舞毯
- WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
- Qt之自定义菜单(按钮菜单)
- jsonKit第三方包错误解决方案
- springmvc获取json Failed to load resource: the server responded with a status of 406 (Not Acceptable)
- MQ7.5以后的权限问题解决
- UVA - 11627 Slalom
- HDU-2808