算法系列——Merge Intervals
来源:互联网 发布:淘宝卖家拍照技巧 编辑:程序博客网 时间:2024/05/28 16:05
题目描述
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].
解题思路
题目要求合并重叠区间。首先我们要将数组进行排序,由于是自定义区间对象 Interval需要自定义排序规则,按照起始位置的大小进行升序排列。然后遍历区间,合并重叠的规则是,如果前一个区间的终点大于等于 当前区间的起点,则应该生成一个新的区间对象,以前一个区间的起点为起点,以两个区间终点的最大值为终点,并将新区建作为pre区间 pre=merge;如果前一个区间与当前区间不重叠,则将前一个区间cur加入到结果数组中,并把当前区间作为pre, pre=cur.
程序实现
/** * 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) { if(intervals==null||intervals.size()<=1) return intervals; Collections.sort(intervals,new Comparator<Interval>(){ public int compare(Interval o1,Interval o2){ return o1.start-o2.start; } }); List<Interval> result=new ArrayList<Interval>(); Interval prev=intervals.get(0); for(int i=1;i<intervals.size();i++){ Interval cur=intervals.get(i); if(prev.end>=cur.start){ Interval merged=new Interval(prev.start,Math.max(prev.end,cur.end)); prev=merged; }else{ result.add(prev); prev=cur; } } result.add(prev); return result; }}
阅读全文
0 0
- 算法系列——Merge Intervals
- LeetCode—Merge Intervals
- 算法系列——Non-overlapping Intervals
- leetcode——Merge Intervals
- LeetCode56——Merge Intervals
- 数组——merge-intervals
- leetcode——Merge Intervals
- Algorithms—56.Merge Intervals
- Merge Intervals算法
- leetcode 056 —— Merge Intervals
- LeetCode 之 Merge Intervals — C++ 实现
- 算法系列——Merge Sorted Array
- [leetcode刷题系列]Merge Intervals
- 【leetcode】Array—— Merge Intervals(56)
- LeetCode | 56. Merge Intervals——合并区间
- 15.4—细节实现题—Merge Intervals
- Merge Intervals
- Merge Intervals
- 一张图解释值类型和引用类型内存分配
- 表的构造数据的复制
- Base64编码与解码
- python
- js中的函数
- 算法系列——Merge Intervals
- Pycharm首次使用中的小问题及其解决方法
- UVA707Robbery(记忆化搜索)
- 算法系列之分治
- 封装、继承与多态
- HDU2222 Keywords Search 【AC自动机模板题】
- 常用JS正则表达式
- 为什么HashMap是线程不安全的
- 浅谈读入优化姿势