lintcode 容易题:Merge Intervals 合并区间
2015-10-12 09:56
429 查看
题目:
合并区间
给出若干闭合区间,合并所有重叠的部分。
样例
给出的区间列表 => 合并后的区间列表:
O(n log n) 的时间和 O(1) 的额外空间。
解题:
先以区间的左边界进行排序,再异步的方式比较右边边界进行合并
程序来源
Java程序
View Code
总耗时: 2250 ms
Python程序
合并区间
给出若干闭合区间,合并所有重叠的部分。
样例
给出的区间列表 => 合并后的区间列表:
[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ] ]
挑战[/code]
O(n log n) 的时间和 O(1) 的额外空间。
解题:
先以区间的左边界进行排序,再异步的方式比较右边边界进行合并
程序来源
Java程序
/** * Definition of Interval: * public class Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */ class Solution { /** * @param intervals: Sorted interval list. * @return: A new sorted interval list. */ public List<Interval> merge(List<Interval> intervals) { // write your code here if(intervals == null || intervals.size()<=1){ return intervals; } Collections.sort(intervals,new IntervalComparator()); List<Interval> result = new ArrayList<Interval>(); Interval last = intervals.get(0); for(int i=1;i<intervals.size();i++){ Interval curt = intervals.get(i); if(curt.start<=last.end){ last.end = Math.max(last.end,curt.end); }else{ result.add(last); last = curt; } } result.add(last); return result; } private class IntervalComparator implements Comparator<Interval>{ public int compare(Interval a,Interval b){ return a.start - b.start; } } }
View Code
总耗时: 2250 ms
Python程序
相关文章推荐
- 图像和视频质量评价简介
- Exception-异常处理(c++)的总结
- GLCM
- 安装Ubuntu 14.04.3 Server mount问题【solved】
- 【Android系列】之DOM、SAX、Pull解析XML
- 举例说, Decorator模式(Decorator Pattern)
- 【Android Studio】Frameworks detected: Android framework is detected in the project Configure
- DDX DDV 用法
- 2014 Regionals 2014 :: Asia - ShangHai World Cup
- 火狐保存的密码是明文的
- Some third
- 使用ArcGIS GP服务之五 JavaScript的调用
- 关于使用SVN update时出现:E155004错误(或者svn文件locked)
- 第6章 函数 习题
- ASP基础入门第六篇(ASP内建对象Request)
- 普及机器视觉,每日一贴
- 循环单链表的建立算法
- leetcode 217--Contains Duplicate
- 不要试图编写独立于容器类型的代码
- YII2.0配置index.php入口文件至根目录