题目链接:merge-intervals
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
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].
*
*/
public class MergeIntervals {
static class Interval {
int start;
int end;
Interval() {
start = 0;
end = 0;
}
Interval(int s, int e) {
start = s;
end = e;
}
}
// 168 / 168 test cases passed.
// Status: Accepted
// Runtime: 326 ms
// Submitted: 1 minute ago
static List<Interval> merge(List<Interval> intervals) {
List<Interval> mergeIntervals = new ArrayList<Interval>();
if(intervals.size() == 0)
return mergeIntervals;
Collections.sort(intervals, new Comparator<Interval>() {
public int compare(Interval int1, Interval int2) {
return int1.start - int2.start;
}
});
Interval preInterval = intervals.remove(0);
for (Interval interval : intervals) {
if (preInterval.end < interval.start) {
mergeIntervals.add(preInterval);
preInterval = interval;
} else {
if(preInterval.end < interval.end)
preInterval.end = interval.end;
}
}
mergeIntervals.add(preInterval);
return mergeIntervals;
}
public static void main(String[] args) {
Interval i1 = new Interval(2, 6);
Interval i2 = new Interval(1, 3);
Interval i3 = new Interval(8, 10);
Interval i4 = new Interval(15, 18);
List<Interval> intervals = new ArrayList<Interval>();
intervals.add(i1);
intervals.add(i2);
intervals.add(i3);
intervals.add(i4);
merge(intervals);
}
}