Solution_mergerInterViews

package demo_1118_MergeIntervals;


/**
 * Given a collection of  intervals,merge all overlaping intervals.
 * For example,
 * Given [1,3],[2,6],[8,10],[15,18]
 * return [1,6],[8,10],[15,18]
 */

//解析:

import sun.swing.BakedArrayList;

import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**
 *   提议:
 *   有很多的区间,把有重叠的却见的合并
 *   思路:
 *   先排序,然后检查响铃的2个区间的,看起那样给区间的结尾是哦㱎后一个区间的开始,注意前一个区间的b
 *   包含的后一个区间的情况。
 *
 *   用Java的自带的sort ()方法,只要自己重写compare ()方法即可。
 */
/**
 * 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 class MyComparator implements Comparator<Interval> {
        @Override
        public int compare(Interval a, Interval b) {
            return a.start - b.start;
        }
    }

    public List<Interval> merge(List<Interval> intervals) {
        List<Interval> ans = new ArrayList<Interval>();
        if (intervals.size() == 0) return ans;

        Collections.sort(intervals, new MyComparator());

        int start = intervals.get(0).start;
        int end = intervals.get(0).end;

        for (int i = 0; i < intervals.size(); i++) {
            Interval inter = intervals.get(i);
            if (inter.start > end) {
                ans.add(new Interval(start, end));
                start = inter.start;
                end = inter.end;
            } else {
                end = Math.max(end, inter.end);
            }
        }
        ans.add(new Interval(start, end));

        return ans;
    }
}


猜你喜欢

转载自blog.csdn.net/xiamaocheng/article/details/84198084