合并区间
来源:互联网 发布:淘宝图书讲谈社 编辑:程序博客网 时间:2024/05/22 06:35
给出若干闭合区间,合并所有重叠的部分。
样例
给出的区间列表 => 合并后的区间列表:
[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ]]
/** * 按照区间上限对区间从小到大排序 */ Comparator<Interval> comparator = new Comparator<Interval>() { @Override public int compare(Interval o1, Interval o2) { if (o1.end > o2.end) return 1; else if (o1.end < o2.end) return -1; return 0; } }; /** * 首先根据区间的上限,对区间进行从小到大排序,然后从上限区间最大的开始合并,若当前区间的下限小于等于前一个区间的上限, * 就进行区间合并,得到新的一个区间,然后将合并产生的新区间作为当前区间继续与前一个区间比较,若无法合并,则将当前区间加 * 入List,并把前一个区间作为当前区间,最后全部比较完后把最后一个区间加入List * * @param intervals * @return */ public List<Interval> merge(List<Interval> intervals) { if (intervals.size() == 0) return intervals; Collections.sort(intervals, comparator); // System.out.println(intervals); List<Interval> result = new ArrayList<>(); Interval current = intervals.get(intervals.size() - 1); for (int i = intervals.size() - 2; i >= 0; i--) { Interval pre = intervals.get(i); Interval merge = null; if (current.start <= pre.end) { merge = new Interval(pre.start > current.start ? current.start : pre.start, current.end); current = merge; } else { result.add(current); current = pre; } } result.add(current); Collections.sort(result, comparator); return result; }
阅读全文
0 0
- 区间合并
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 区间合并
- 区间合并
- 区间合并
- 区间合并
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- Linux之旅
- [前端与移动开发] 【前端技术分享】Web前端性能优化的9大问题
- Python编程_Lesson001_python简介和输入输出
- 分布式系统SDK端重试策略
- A1001. A+B Format (20)
- 合并区间
- java基础知识点回顾笔记(日更)
- 对文件进行操作
- python新式类和经典类的区别?
- nodejs 连接 MySQL
- (C++)堆栈的类模板
- 留个纪念傻傻的博客
- 链表排序 1.0粗糙版
- LeetCode 75. Sort Colors