leetcode -- 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].

[解题思路]

这里使用Insert 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 public class Solution {
11     public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
12         // Start typing your Java solution below
13         // DO NOT write main() function
14         ArrayList<Interval> result = new ArrayList<Interval>();
15         for(int i = 0; i < intervals.size(); i++){
16             result = insert(result, intervals.get(i));
17         }
18         return result;
19     }
20     
21     public ArrayList<Interval> insert(ArrayList<Interval> intervals,
22             Interval newInterval) {
23         ArrayList<Interval> result = new ArrayList<Interval>();
24         for (int i = 0; i < intervals.size(); i++) {
25             Interval tmp = intervals.get(i);
26             if (newInterval.end < tmp.start) {
27                 result.add(newInterval);
28                 for(int j = i; j < intervals.size(); j++){
29                     result.add(intervals.get(j));
30                 }
31                 return result;
32             } else if (newInterval.start > tmp.end) {
33                 result.add(tmp);
34                 continue;
35             } else {
36                 newInterval.start = Math.min(tmp.start, newInterval.start);
37                 newInterval.end = Math.max(tmp.end, newInterval.end);
38             }
39         }
40         result.add(newInterval);
41         return result;
42     }
43 }

 

posted @ 2013-08-12 22:23  feiling  阅读(346)  评论(0编辑  收藏  举报