LeetCode-56:Merge Intervals

作者: 小北觅 | 来源:发表于2018-09-05 16:47 被阅读4次

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

思路:
①先将区间按照start进行升序排序;
②遍历区间集合,当前一个区间的end小于后一个区间的start时,直接添加到结果集合中。否则合并区间,新区间的end值是两者的end最大值。

/**
 * 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; }
 * }
 */
import java.util.*;
public class Solution {
    public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        ArrayList<Interval> result = new  ArrayList<Interval>();
        if(intervals == null || intervals.size()< 1)
            return result;
        
        //排序
        Collections.sort(intervals,new Comparator<Interval>(){
            public int compare(Interval o1,Interval o2){
                return o1.start-o2.start;
            }
        });
        
        Interval prev = intervals.get(0);
        for(int i=1; i<intervals.size();i++){
            Interval interval = intervals.get(i);
            if(prev.end >= interval.start){
                prev.end = Math.max(prev.end,interval.end);
            }else{
                result.add(prev);
                prev = interval;
            }
        }
        result.add(prev);
        return result;
    }
}

相关文章

网友评论

    本文标题:LeetCode-56:Merge Intervals

    本文链接:https://www.haomeiwen.com/subject/fcoawftx.html