public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        //1. 按照区间左节点排序
        Collections.sort(intervals, new Comparator<Interval>(){
            public int compare(Interval list1, Interval list2){
                return list1.start - list2.start;
            }
        });

        //2. 维护结果
        ArrayList<Interval> res = new ArrayList();
        int index = -1;

        //3. 遍历有序的原始区间
        for(Interval member : intervals){
            //4. 当结果集为空,或者新的元素与结果集中的区间没有重合,直接添加
            if(index == -1 || member.start > res.get(index).end){
                res.add(member);
                index++;
            }else{
                //5. 有重合则修改结果集中的区间右端点,取新元素和结果集中较大者
                res.get(index).end = Math.max(member.end, res.get(index).end);
            }
        }

        return res;
    }