LeetCode-56. Merge Intervals
来源:互联网 发布:25岁衣服品牌知乎 编辑:程序博客网 时间:2024/05/18 15:57
一、问题描述
- 给定一系列区间,将其中重叠的区间合并,返回新的区间数组。
- 例如: 输入[1,3],[2,6],[8,10],[15,18]
输出:[1,6],[8,10],[15,18]
二、解题思路
- 首先将给定的集合排序,排序的规则:
- 按照集合中元素的start属性升序排列;
- start属性相等的两个元素,按照end属性升序排列
- 然后遍历集合,首先为start变量赋值为集合中第一个元素的start属性,end变量赋值为集合中第一个元素的end属性;然后从第二个元素开始循环判断该元素的start属性是否大于end变量,如果是,则将前面的start变量和end变量添加到结果集中,同时更新start变量和end变量为当前元素的相应属性值;如果否,说明有重叠,然后选择end变量和end属性中较大值作为新的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; } * } */public class Solution { public List<Interval> merge(List<Interval> intervals) { List<Interval> result=new ArrayList<Interval>(); int n=intervals.size(); if(intervals==null || n==0) return result; Collections.sort(intervals,new Comparator<Interval>(){ @Override public int compare(Interval A,Interval B){ /* if(A.start!=B.start) return A.start-B.start; return A.end-B.end; */ //很奇怪的一件事,为什么比较函数换成上面的注释部分就超时呢 if(A.start>B.start){ return 1; }else if(A.start==B.start){ if(A.end>B.end) return 1; else if(A.end==B.end) return 0; else return -1; }else{ return -1; } } }); int start=intervals.get(0).start; int end=intervals.get(0).end; for(int i=1;i<intervals.size();i++){ if(intervals.get(i).start>end){ result.add(new Interval(start,end)); start=intervals.get(i).start; end=intervals.get(i).end; }else{ end=(intervals.get(i).end>=end)?intervals.get(i).end:end; } } //end=(intervals.get(n-1).end>=end?intervals.get(n-1).end:end); result.add(new Interval(start,end)); return result; }}
阅读全文
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
- ORA-19870: 还原备份片段...ORA-19573: 无法获得 exclusive 入队
- python--ATM取款机_最终完善版
- smartctl检测物理磁盘健康度的测试结果解读
- java读取配置文件常用的四种方式
- LeetCode 1.Two Sum
- LeetCode-56. Merge Intervals
- 概率论-【第一章】随机事件与概率
- 对于内存泄漏应注意的几点
- window7 环境下VS CODE编译调试C++程序配置
- hibernate创建表的时候出现Incorrect column specifier for column 'sid'
- 选择器的优先级
- JS高级进阶之征服异步编程
- C primer plus 第三章总结
- Zurmo(十八)之顶栏模块快捷设置