Merge Intervals

题目地址:
https://leetcode.com/problems/merge-intervals/#/description

题目:
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].

解题思路:
这道题是每次从rst的list中拿最后一个,然后看看可不可以merge。

代码:

public class MergeIntervals {

    class Interval{
        int start;
        int end;
        public Interval(int start, int end){
            this.start = start;
            this.end = end;
        }
    }

    public List<Interval> merge(List<Interval> intervals) {
        List<Interval> rst = new ArrayList<>();
        if(intervals == null || intervals.size() == 0){
            return rst;
        }
//        Collections.sort(intervals, new Comparator<Interval>(){//            @Override//            public int compare(Interval i1, Interval i2){//                return i1.start - i2.start;//            }//        });        Collections.sort(intervals, (Interval i1, Interval i2) -> (i1.start - i2.start));
        Interval interval = intervals.get(0);
        rst.add(interval);
        for(int i = 1; i <= intervals.size() - 1; i++){
            Interval curr = rst.get(rst.size() - 1);
            Interval next = intervals.get(i);
            if(curr.end >= next.start){
                curr.end = Math.max(curr.end, next.end);
            }
            else{
                rst.add(next);
            }
        }
        return rst;
    }
}





Comments

Popular Posts