import java.util.*;
/**
 * 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 ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        Collections.sort(intervals, new Comparator<Interval>() {
       @Override
       public int compare(Interval o1, Interval o2) {
        return o1.start - o2.start;
       }
      });

      for (int i = 0; i < intervals.size();) {

        if((i+1) == intervals.size()) return intervals;
        if((intervals.get(i+1).start > intervals.get(i).end)){

         //----------   -----------
         //无需合并
            i++;
        }else {

         //--------------------
         //                   -----------------
         //需要合并
         if(intervals.get(i+1).start <= intervals.get(i).end){
            intervals.get(i).end = Math.max(intervals.get(i).end,intervals.get(i+1).end);
         }

         intervals.remove(i+1);
        }
      }

      return  intervals;
    }
}