合并区间
2015-11-26 02:06
405 查看
给出若干闭合区间,合并所有重叠的部分。
给出的区间列表 => 合并后的区间列表:
挑战
O(n log n) 的时间和 O(1) 的额外空间。
解题思路:这道题在最开始看的时候误以为是已经排好序的,结果直接就分情况讨论了,当然程序是妥妥没有过。所以这样的题目印象中还是比较常见的,首先按照左端点进行排序,排好序以后判断右端点与下一个区间的左端点的关系来决定是否合并。
当然,我在这个过程中发现了java更加神奇的地方:1、java的Collections.sort函数及其相关函数调用;2、java中for的新用法。关于这两点其他随笔中也有总结
View Code
给出的区间列表 => 合并后的区间列表:
[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ] ]
挑战
O(n log n) 的时间和 O(1) 的额外空间。
解题思路:这道题在最开始看的时候误以为是已经排好序的,结果直接就分情况讨论了,当然程序是妥妥没有过。所以这样的题目印象中还是比较常见的,首先按照左端点进行排序,排好序以后判断右端点与下一个区间的左端点的关系来决定是否合并。
当然,我在这个过程中发现了java更加神奇的地方:1、java的Collections.sort函数及其相关函数调用;2、java中for的新用法。关于这两点其他随笔中也有总结
/** * 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 List<Interval> result = new LinkedList<>(); if(intervals == null || intervals.size()<1){ return result; } Collections.sort(intervals,new Comparator<Interval>(){ @Override public int compare(Interval o1,Interval o2){ return o1.start - o2.start; } }); Interval prev = null; for (Interval item : intervals) { if (prev == null || prev.end < item.start) { result.add(item); prev = item; } else if (prev.end < item.end) { prev.end = item.end; } } return result; } }
View Code
相关文章推荐
- Win7中安装不了Arduino驱动怎么办
- 机器学习笔记_ 降维_3:SVD
- Linux正则表达式
- **LeetCode-Minimum Window Substring
- 第5章(4) 可变参数列表
- 时间TDateTime相当于是Double,即双精度数64位,终于查到它用11位表示e,53位表示精度(整数小数一起),最前面一位表示正负
- Deep learning-contrast normalization
- zabbix action 未被触发问题的排查
- Zabbix入门
- JavaScript中寄生组合式继承的理解
- Mac OS 配置Maven
- 划分型动态规划 之 CODE[VS] 1040 统计单词个数 2001年NOIP全国联赛提高组
- 2077(汉诺塔4
- Python_异常处理
- sersync代替inotify实现服务器之间实时同步(CentOS 6.7)
- Mnesia用法介绍
- news总结
- TypeScript:基本类型和接口
- 自定义View之自定义属性
- 在UI中动态实例化对象设置位置无效的问题