56. Merge Intervals
Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].Input: [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considerred overlapping.class Solution {
public List<Interval> merge(List<Interval> intervals) {
if (intervals == null || intervals.size() <= 1) return intervals;
Collections.sort(intervals, new Comparator<Interval>() {
public int compare(Interval a, Interval b) {
return a.start - b.start;
}
});
// 也可以这样写
intervals.sort((i1, i2)-> {
return Integer.compare(i1.start, i2.start);
});
List<Interval> list = new ArrayList<>();
Interval last = intervals.get(0);
for (int i = 1; i < intervals.size(); i++) {
Interval curr = intervals.get(i);
if (last.end < curr.start) { //interval is not continuous
list.add(last);
last = curr;
} else {
last.end = Math.max(last.end, curr.end);
}
}
list.add(last);
return list;
}
}Last updated