leetcode56. 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]
.
解题思路:
1)将集合进行排序;
集合的排序建议使用Collections的sort方法实现,需要自己实现Comparator接口;
2)依次进行归并,当后者的start大于当前Interval的end时,将当前Interval加入到集合中,否则将当前Interval和后者Interval进行归并
注意:边界条件的判断
代码:
1 /** 2 * Definition for an interval. 3 * public class Interval { 4 * int start; 5 * int end; 6 * Interval() { start = 0; end = 0; } 7 * Interval(int s, int e) { start = s; end = e; } 8 * } 9 */ 10 11 12 public class Solution { 13 public List<Interval> merge(List<Interval> intervals) { 14 //处理特殊情况 15 if(intervals == null || intervals.size() <2 ){ 16 return intervals; 17 } 18 19 //集合排序 20 ComparatorImpl com = new ComparatorImpl(); 21 Collections.sort(intervals,com); 22 23 //归并 24 List<Interval> temp = new ArrayList<Interval>(); 25 Interval val = intervals.get(0); 26 Interval next; 27 boolean flag = true; 28 for(int i=1; i<intervals.size();){ 29 next = intervals.get(i); 30 flag = true; 31 if(next.start > val.end){ 32 temp.add(val); 33 val = next; 34 flag = false; 35 }else{ 36 //进行一次归并,i自增一次 37 val.end = Math.max(val.end,next.end); 38 i++; 39 } 40 } 41 42 //处理最后一个未归并的Interval 43 if(flag){ 44 temp.add(val); 45 } 46 47 return temp; 48 } 49 } 50 51 //实现排序接口 52 class ComparatorImpl implements Comparator<Interval> 53 { 54 public int compare(Interval o1, Interval o2) { 55 // TODO Auto-generated method stub 56 return o1.start-o2.start; 57 } 58 59 }
转载于:https://www.cnblogs.com/bywallance/p/5757242.html
leetcode56. Merge Intervals相关推荐
- [LeetCode]Merge Intervals
题目:Merge Intervals 给定n个区间合并重合区间 思路: 先按照区间起点排序,然后合并下面情况: 1.起点相同,以最大的终点为新的终点: 2.前一个终点大于后一个的起点. /****** ...
- 【leetcode】56. Merge Intervals 相邻线段归并
1. 题目 Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2, ...
- C#LeetCode刷题之#56-合并区间(Merge Intervals)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3676 访问. 给出一个区间的集合,请合并所有重叠的区间. 输入: ...
- 【细节实现题】LeetCode 56. Merge Intervals
LeetCode 56. Merge Intervals Solution1:我的答案 这道题思路不难,有个坑爹的地方在于输入的区间向量未必是有序的,所以利用优先队列priority_queue来排序 ...
- 56. Merge Intervals(合并区间)解法(C++ 注释)
56. Merge Intervals(合并区间) 1. 题目描述 2. 排序(Sorting) 2.1 解题思路 2.2 实例代码 1. 题目描述 给出一个区间的集合,请合并所有重叠的区间. 示例 ...
- LeetCode 56. Merge Intervals
原题链接在这里:https://leetcode.com/problems/merge-intervals/ 题目: Given a collection of intervals, merge al ...
- Merge Intervals
代码: 1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 5 using namesp ...
- LeetCode Merge Intervals
Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...
- LeetCode:Merge Intervals
题目链接 Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6 ...
- merge intervals(合并间隔)
Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...
最新文章
- Hbase数据模型 列族
- Linux ps aux指令詳解--转
- python工具包_python 工具包
- Panda处理文本和时序数据?首选向量化
- mysql gtid 主主_mysql GTID主从复制(主库在线,添加新丛库)
- 自定义数字格式字符串_部分分隔符和条件格式
- Sakai 20.0 部署
- gg 修改器游戏被保护_2.游戏so防封的制作思路
- python moving average_Python实现滑动平均(Moving Average)的代码教程
- 【GNN】task1-简单图论 Data类-PyG中图的表示及使用
- notepad++设置背景颜色为豆沙绿
- Atitit ffmpeg功能表 多媒体处理类库工具 音频视频 1.1.ffmpeg音视频合成 1.2.Atitit 视频音频分离 提取法 1.3.ffmpeg对视频封装和分离 使用ffmpeg对
- 这是用原声js编写的地址选择器,使用select编写的三联选择器
- c语言自动输入0到1000,c语言实现输入一组数自动从大到小排列
- Oracle之创建定时任务
- r8169驱动源码阅读记录
- 针式打印机及微型打印机突然不能打印的问题分析和解决办法
- h3c linux静态链路聚合,h3c核心交换机接海康交换机链路聚合该怎么做静态的
- Linux命令行提示符颜色设置PS1
- java程序员几大成长法则!