前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >56. 合并区间

56. 合并区间

作者头像
张伦聪zhangluncong
发布2022-10-26 17:52:57
1460
发布2022-10-26 17:52:57
举报

给出一个区间的集合,请合并所有重叠的区间。

示例 1:

代码语言:javascript
复制
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

代码语言:javascript
复制
输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

解:题目不难,注意会出现[[1,8],[4,5]…]这种情况,比较特殊用Math.max比较一下

代码语言:javascript
复制
/**
 * 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 List<Interval> merge(List<Interval> intervals) {

        List<Interval> rtn = new ArrayList<>();
        if (intervals == null || intervals.size() == 0) {
            return rtn;
        }
        Collections.sort(intervals, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                Interval i1 = (Interval) o1;
                Interval i2 = (Interval) o2;
                if (i1.start < i2.start) {
                    return -1;
                } else if (i1.start > i2.start) {
                    return 1;
                } else {
                    if (i1.end < i2.end) {
                        return -1;
                    } else if (i1.end > i2.end) {
                        return 1;
                    }
                }
                return 0;
            }
        });

        Interval intervalPre = intervals.get(0);

        for (int i = 1; i < intervals.size(); i++) {
            Interval interval = intervals.get(i);
            if (intervalPre.end < interval.start) {
                rtn.add(new Interval(intervalPre.start, intervalPre.end));
                intervalPre = interval;
            } else {
                intervalPre.end = Math.max(interval.end, intervalPre.end);
            }
        }
        rtn.add(intervalPre);
        return rtn;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档