码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Merge Intervals

时间:2015-10-16 23:06:29      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

原题链接在这里:https://leetcode.com/problems/merge-intervals/

首先sort list 中的interval. 然后比较 前一个 interval的end是否 >= 后一个interval 的start, 若是,则合并这两个interval, 用来和下一个比较。若不是,则把这段interval 加到res中去。

通过本题见到了如何改写Comparator, 参见了这篇文章:http://www.blogjava.net/yesjoy/articles/126046.html 从Comparator Interface implement 出一个class, 定义了interval的比较方法。

Note: 注意corner case, 若是pre的end 和 下一个的start 相等,也是要合并的。

AC Java:

 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 public class Solution {
11     public List<Interval> merge(List<Interval> intervals) {
12         if(intervals == null || intervals.size() == 0){
13             return intervals;
14         }
15         Collections.sort(intervals, new IntervalComparator());
16         List<Interval> res = new ArrayList<Interval>();
17         Interval pre = intervals.get(0);
18         for(int i = 1; i<intervals.size(); i++){
19             if(pre.end >= intervals.get(i).start){
20                 pre.end = Math.max(pre.end,intervals.get(i).end);
21             }else{
22                 res.add(pre);
23                 pre = intervals.get(i);
24             }
25         }
26         res.add(pre);
27         return res;
28     }
29 }
30 
31 class IntervalComparator implements Comparator<Interval>{
32     public int compare(Interval i1, Interval i2){
33         if(i1.start == i2.start){
34             return i1.end - i2.end;
35         }
36         return i1.start - i2.start;
37     }
38 }

 

LeetCode Merge Intervals

标签:

原文地址:http://www.cnblogs.com/Dylan-Java-NYC/p/4886559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!