156.Merge Intervals-合并区间(容易题)

来源:互联网 发布:什么软件可以透视 编辑:程序博客网 时间:2024/06/05 14:20

合并区间

  1. 题目

    给出若干闭合区间,合并所有重叠的部分。

  2. 样例

    给出的区间列表 => 合并后的区间列表:
    这里写图片描述

  3. 挑战

    O(n log n) 的时间和 O(1) 的额外空间。

  4. 题解

先排序再合并。

/** * Definition of Interval: * public class Interval { *     int start, end; *     Interval(int start, int end) { *         this.start = start; *         this.end = end; *     } */class Solution {    /**     * @param intervals: Sorted interval list.     * @return: A new sorted interval list.     */    public class Solution {    public ArrayList<Interval> merge(ArrayList<Interval> intervals) {        if (intervals == null || intervals.size() <= 1)         {            return intervals;        }        Collections.sort(intervals, new IntervalComparator());               ArrayList<Interval> result = new ArrayList<Interval>();        Interval last = intervals.get(0);        for (int i = 1; i < intervals.size(); i++)         {            Interval curt = intervals.get(i);            if (curt.start <= last.end )            {                last.end = Math.max(last.end, curt.end);            }            else            {                result.add(last);                last = curt;            }        }        result.add(last);        return result;    }    private class IntervalComparator implements Comparator<Interval>     {        public int compare(Interval a, Interval b)         {            return a.start - b.start;        }    }}

Last Update 2016.9.7

0 0