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 }
复制代码

 

posted @   沧浪少年  阅读(212)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示