博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode:57. 插入区间
阅读量:3710 次
发布时间:2019-05-21

本文共 889 字,大约阅读时间需要 2 分钟。

给出一个无重叠的 ,按照区间起始端点排序的区间列表。

在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。

示例 1:

输入: intervals = [[1,3],[6,9]], newInterval = [2,5]输出: [[1,5],[6,9]]

示例 2:

输入: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输出: [[1,2],[3,10],[12,16]]解释: 这是因为新的区间 [4,8]与 [3,5],[6,7],[8,10]重叠。

解题思路:

末尾插入一个新的区间,然后调用Leetcode56题的区间排序函数即可。

C++代码

class Solution {

public:
    vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {
        intervals.emplace_back(newInterval);
        return merge(intervals);
    }

    vector<Interval> merge(vector<Interval>& intervals) {

        sort(intervals.begin(), intervals.end(), [](Interval a, Interval b) {
                                                        return a.start < b.start;
                                                    });
        vector<Interval> res;
        for (const auto &iv : intervals) {
            if (res.empty() || res.back().end < iv.start) {
                res.emplace_back(iv);
            } else {
                res.back().end = res.back().end > iv.end ?
                                    res.back().end : iv.end;
            }
        }
        return res;
    }

};

 

转载地址:http://jrfjn.baihongyu.com/

你可能感兴趣的文章
16进制字符串转字节
查看>>
BP神经网络算法
查看>>
BP神经网络数据预测实例代码
查看>>
粒子群算法
查看>>
蓝桥杯--拉马车
查看>>
A开头六级词汇
查看>>
J、K、L开头前缀
查看>>
小朋友排队
查看>>
匈牙利算法求解整数规划
查看>>
非线性规划模型案例及其编程实现
查看>>
历届试题 国王的烦恼
查看>>
洛谷p1020导弹拦截
查看>>
洛谷p1282多米诺骨牌
查看>>
洛谷p1417烹饪方案
查看>>
P2123皇后游戏+P1080国王游戏
查看>>
HTML5自学笔记上
查看>>
HTML5自学笔记下
查看>>
CSS3各种类型的选择器总结
查看>>
leecode刷题-20200528-easy-110.平衡二叉树
查看>>
uniapp开发:“this.$refs.xxxx“调用子组件无效的可能原因
查看>>