LintCode- 合并区间
2016-03-07 17:44
197 查看
合并区间
给出若干闭合区间,合并所有重叠的部分。
样例
给出的区间列表 => 合并后的区间列表:
[ [
[1, 3], [1, 6],
[2, 6], => [8, 10],
[8, 10], [15, 18]
[15, 18] ]
]
给出若干闭合区间,合并所有重叠的部分。
样例
给出的区间列表 => 合并后的区间列表:
[ [
[1, 3], [1, 6],
[2, 6], => [8, 10],
[8, 10], [15, 18]
[15, 18] ]
]
//先排序 然后根据i位置的end与i+1位置的star比较 如果有重叠 则表示可以合并 合并后的end为i与i+1位置上的最大值。 /** * 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) { this.sort(intervals); for (int i=0;i<intervals.size()-1;i++) { Interval data = intervals.get(i); if(data.end>=intervals.get(i+1).start){ data.end=intervals.get(i+1).end>data.end?intervals.get(i+1).end:data.end; intervals.remove(i+1); i--; } } return intervals; } public void sort(List<Interval> intervals){ for (int i = intervals.size() - 1; i > 0; --i) { for (int j = 0; j < i; ++j) { if(intervals.get(j).start>intervals.get(j+1).start){ Interval old = new Interval(intervals.get(j).start,intervals.get(j).end); intervals.get(j).end=intervals.get(j+1).end; intervals.get(j).start=intervals.get(j+1).start; intervals.get(j+1).end=old.end; intervals.get(j+1).start=old.start; } } } } }
相关文章推荐
- 浅谈WPF中的PreviewTextInput
- 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础
- python Queue学习
- Android札记
- hbase的并发控制机制
- Linux中的线程局部存储
- Java虚拟机有两种类装载器
- 一致性Hash算法
- 最大公约数求法
- Mac vim iterm2配色方案
- ubuntu基本操作和web环境搭建
- [iOS]监控屏幕旋转
- 中奖率算法,方便修改中奖率
- BZOJ(本校) 3048 染色 - dp&递推找规律
- 树--天平问题
- nginx安装
- lintcode-easy-Trailing Zeros
- javascript 获得上个月、获取下个月日期
- PHP汉字转拼音
- leetcode:Flatten Binary Tree to Linked List