56. Merge Intervals

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

Solution:

思路:
Time Complexity: O(N) Space Complexity: O(N)

Solution Code:

/**
 * 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; }
 * }
 */
class Solution {
    public List<Interval> merge(List<Interval> intervals) {
        if (intervals.size() <= 1)
            return intervals;

        // Sort by ascending starting point using an anonymous Comparator
        intervals.sort((i1, i2) -> i1.start - i2.start);

        List<Interval> result = new LinkedList<Interval>();
        int start = intervals.get(0).start;
        int end = intervals.get(0).end;

        for (Interval interval : intervals) {
            if (interval.start <= end) // Overlapping intervals, move the end if needed
                end = Math.max(end, interval.end);
            else {                     // Disjoint intervals, add the previous one and reset bounds
                result.add(new Interval(start, end));
                start = interval.start;
                end = interval.end;
            }
        }

        // Add the last interval
        result.add(new Interval(start, end));
        return result;
    }
}


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,358评论 0 33
  • Given a collection of intervals, merge all overlapping in...
    Jeanz阅读 1,441评论 0 0
  • Algorithm sort intervals according to start time in incre...
    宋翰要长肉阅读 2,087评论 0 0
  • 油菜花开了又开,开春了,春天的气息。人有一种东西叫做忘记。奶奶哭了,妈妈也哭了,就连从未哭过的爸爸,眼里也含着泪,...
    鹿_d748阅读 1,319评论 0 2
  • 深秋的城市,大清早雾蒙蒙,能见度非常之低,甚至十几层的楼上都看不到楼下。 此刻伏案与窗前,开始今天的第一项任务,也...
    开拓者2021阅读 1,607评论 0 0

友情链接更多精彩内容