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

题意:合并区间,将给的区间合并成最终版本就可以。

思路:按照区间左侧从小到大排序,如果左侧相同,按照右侧从小到大排序。从左向右,两两合并即可。

public static List<Interval> merge(List<Interval> intervals) {

        List<Interval> result = new ArrayList<Interval>();

        if (intervals == null || intervals.size() == 0) {
            return result;
        }

        Collections.sort(intervals, new Comparator<Interval>() {
            @Override
            public int compare(Interval i1, Interval i2) {
                if (i1.start != i2.start) {
                    return i1.start - i2.start;
                } else {
                    return i1.end - i2.end;
                }
            }
        });

        Interval pre = intervals.get(0);
        for (int i = 0; i < intervals.size(); i++) {
            Interval curr = intervals.get(i);
            if (curr.start > pre.end) {
                result.add(pre);
                pre = curr;
            } else {
                Interval meraged = new Interval(pre.start, Math.max(pre.end, curr.end));
                pre = meraged;
            }
        }
        return result;

    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目 Given a collection of intervals, merge all overlapping...
    persistent100阅读 403评论 0 0
  • 原题 给出若干闭合区间,合并所有重叠的部分。 样例给出的区间列表 => 合并后的区间列表: 解题思路 首先,把区间...
    Jason_Yuan阅读 397评论 0 0
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,791评论 0 33
  • 花儿组 A1花儿的声音之旅 7.10作业:声音平淡的问题比以前有改善,需要继续提升的问题是:发声靠前偏于单薄、唇舌...
    长安教练阅读 1,095评论 1 4
  • 夜晚七点多,拖着4件行李踉跄下了出租车,小区街灯昏暗,零星的居民于饭后在院子中踱着步。环视一周,抬头看了一下楼牌,...
    六月bluesky阅读 663评论 0 1