Merge Intervals

来源:互联网 发布:源码能不能用微信建站 编辑:程序博客网 时间:2024/04/29 13:27

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

思路:主要注意comparator怎么写,还有新建一个interval的时候,要同时算两个interval的最小和最大。

list的时候,要用collections.sort

array的时候,要用 Arrays.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; } * } */public class Solution {    public List<Interval> merge(List<Interval> intervals) {        List<Interval> list = new ArrayList<Interval>();        if(intervals == null || intervals.size() == 0) return list;        Collections.sort(intervals, new Comparator<Interval>(){            @Override            public int compare(Interval a, Interval b){                return a.start - b.start;            }        });                Interval begin = intervals.get(0);        for(int i=1; i<intervals.size(); i++){            Interval temp = intervals.get(i);            if(begin.end >= temp.start){                begin = new Interval(Math.min(begin.start, temp.start), Math.max(begin.end, temp.end));            } else { // begin.end < temp.start;                list.add(begin);                begin = temp;            }        }        list.add(begin);        return list;    }}


0 0