LeetCode 56. Merge Intervals
来源:互联网 发布:手机恶意坑人软件 编辑:程序博客网 时间:2024/06/02 06:11
56. Merge Intervals
Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].
思路分析:
第一步:应当将所给的intervals排序,即需要重写排序算法。排序规则为:给定interval a , b.我们将对其a.start 和 b.start 进行比较
第二步:排序完成后,依次遍历整个intervals,第一个interval可以先加入结果集res;
如果结果集中res.get(res.size() - 1).end < 下一个待加入结果集(正在进行判断)的 interval.start, 说明两个interval没有重叠区 域,可以直接加入
否则:说明存在重叠区域,此时修改结果集中res.get(res.size() - 1).end的值,为结果集中res.get(res.size() - 1).end,或者待加入 结果集中的interval.end中较大的一个。
注意:在第一步比较过程中,我们已经确定每次首先加入结果集的一定是start较小的位,但并没有规定end位的排序,因此在后面的比较中,如果存在重叠区域,我们只需要确定现有结果集和待加入的interval中end位较大即可保证归并了重叠区域。
代码实现如下:
/**
* 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; }
* }
*/
class Solution {
private class IntervalComparator implements Comparator<Interval>{
@Override
public int compare(Interval a, Interval b){
return a.start < b.start ? -1 : a.start == b.start ? 0 : 1;
}
}
public List<Interval> merge(List<Interval> intervals) {
Collections.sort(intervals, new IntervalComparator());
List<Interval> res = new ArrayList<>();
for(Interval interval : intervals){
if(res.isEmpty() || res.get(res.size() - 1).end < interval.start){
res.add(interval);
}else{
res.get(res.size() - 1).end = Math.max(res.get(res.size() - 1).end, interval.end);
}
}
return res;
}
}
阅读全文
0 0
- [LeetCode]56.Merge Intervals
- 56. Merge Intervals Leetcode
- LeetCode --- 56. Merge Intervals
- LeetCode 56.Merge Intervals
- [Leetcode] 56. Merge Intervals
- [leetcode] 56.Merge Intervals
- 【leetcode】56. Merge Intervals
- [leetcode] 56.Merge Intervals
- **LeetCode 56. Merge Intervals
- LeetCode 56. Merge Intervals
- leetcode 56. Merge Intervals
- 【LeetCode】56. Merge Intervals
- LeetCode 56. Merge Intervals
- 【leetcode】56. Merge Intervals
- leetcode 56. Merge Intervals
- leetcode.56. Merge Intervals
- [LeetCode] 56. Merge Intervals
- leetcode 56. Merge Intervals
- Android颜色
- deeplearning.ai-lecture1-building deep neural network steps
- 数据结构实验之查找一:二叉排序树
- ubuntu {DRDY ERR}.........
- CS229学习笔记之概率解释与局部加权线性回归
- LeetCode 56. Merge Intervals
- 当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢?
- java简单爬取网页内容实例
- python-remote SDK 多层目录的import,subprocess的使用就idea中环境变量
- POJ 3352 Road Construction
- 全排列的递归实现以及利用STL实现全排列
- [墙裂推荐]AndroidVideoCache:实现视屏播放边下边播
- hibernate问题解决 JDBC Driver class not found: oracle.jdbc.driver.OracleDriver
- 数据结构为: