1 public class Solution {
2 public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
3 // IMPORTANT: Please reset any member data you declared, as
4 // the same Solution instance will be reused for each test case.
5 ArrayList<Interval> result = new ArrayList<Interval>();
6 if(intervals == null || intervals.size() == 0)
7 return result;
8
9 Comparator<Interval> comparator = new Comparator<Interval>() {
10 public int compare(Interval i1, Interval i2) {
11 if (i1.start < i2.start)
12 return -1;
13 else if (i1.start > i2.start)
14 return 1;
15 else {
16 if (i1.end < i2.end)
17 return -1;
18 else if (i1.end > i2.end)
19 return 1;
20 else
21 return 0;
22 }
23 }
24 };
25 Collections.sort(intervals, comparator);
26 Interval newinterval = new Interval(intervals.get(0).start, intervals.get(0).end);
27
28 for(int i = 1; i < intervals.size(); i++){
29 Interval tmp = intervals.get(i);
30 if(newinterval.end < tmp.start){
31 result.add(newinterval);
32 newinterval = new Interval(tmp.start, tmp.end);
33 }
34 else{
35 newinterval.end = Math.max(newinterval.end, tmp.end);
36 }
37 }
38 result.add(newinterval);
39 return result;
40 }
41
42 }