leetcode 56. Merge Intervals
Given a collection of intervals, merge all overlapping intervals.
Example 1:
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].
Example 2:
Input: [[1,4],[4,5]] Output: [[1,5]] Explanation: Intervals [1,4] and [4,5] are considered overlapping.
第一次用java自带的“List” 这个数据结构,好多用法还不清楚,尤其是sort这个自带的排序方法....
/** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interval(int s, int e) { start = s; end = e; } * } */ class Solution { public List<Interval> merge(List<Interval> intervals) { if(intervals.size() < 2) return intervals; // Sort by ascending starting point using an anonymous Comparator intervals.sort((i1,i2) -> Integer.compare(i1.start,i2.start)); int start = intervals.get(0).start; int end = intervals.get(0).end; List<Interval> x = new LinkedList<Interval>(); for(Interval interval: intervals) { if(interval.start <= end) { end = Math.max(end, interval.end); }else{ x.add(new Interval(start,end)); start = interval.start; end = interval.end; } } //add the last interval; x.add(new Interval(start,end)); return x; } }