Leetcode #57. Insert Interval 间隔插入 解题报告
2016-04-27 23:56
267 查看
1 解题思想
首先,请先看昨天的基友题 Leetcode #56. Merge Intervals 间隔合并 解题报告今天的题目也是给了一堆区间,然后再给一个额外的区间,让你将他进行插入,然后合并输出。
我的方法很懒,直接用昨天的代码就可以了。。。昨天的是合并啊,今天我们就把这个新的区间,加进去合并下不就可以了?
所以请仔细看看代码注释,或者是昨天的解题。。我真的复制粘贴后几十秒就搞定了
2 原题
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].
3 AC解
/** * 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> merge(List<Interval> intervals) { List<Interval> result=new ArrayList<Interval>(); Collections.sort(intervals, new Comparator<Interval>() { public int compare(Interval arg0, Interval arg1) { return arg0.start-arg1.start; } }); if(intervals.size()<1) return result; Interval p=intervals.get(0),tmp; int i=1; while(i<intervals.size()){ tmp=intervals.get(i); if(p.end>=tmp.start){ p.end=Math.max(p.end,tmp.end); } else{ result.add(p); p=tmp; } i++; } result.add(p); return result; } /** * 这道题直接复制就好了 优化点可以考虑下用二分查找顺序,不用再排序了。。但我偷懒 * 这有这两行代码是新写的,剩下复制的。。。30S AC https://leetcode.com/problems/merge-intervals/ 复制的是这题的代码 */ public List<Interval> insert(List<Interval> intervals, Interval newInterval) { intervals.add(newInterval); return merge(intervals); } }
相关文章推荐
- 第一阶段冲刺个人博客10
- Oracle -常用命令
- [todo]scala之spray
- python基础学习02(if...else...elif)
- 使用缓冲输入流和缓冲输出流复制文件
- c++实验4
- hibernate.hbm.xml 属性详解
- 在android studio 2.1 实现简单的ndk
- bzoj1845【CQOI2005】三角形面积并
- 专题三 第一题
- Linux c 数组大小的限制
- poj--2823 Sliding Window(单调队列)
- 装系统问题,BIOS显示不出硬盘解决方案
- python基础学习01
- 控制台输出的内容复制到txt文件
- ONVIF学习之实现discovery
- iOS:时间格式化(标准时间转为时间戳、时间戳转为标准时间、时间戳转为日期)
- 关于opencv从图中画圈的思考
- Problem-L
- 复制文本文件