2023-08-28 LeetCode每日一题(插入区间)

2023-08-28每日一题

一、题目编号

57. 插入区间

二、题目链接

点击跳转到题目位置

三、题目描述

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

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

示例 1:
在这里插入图片描述
示例 2:
在这里插入图片描述
示例 3:
在这里插入图片描述
示例 4:
在这里插入图片描述
示例 5:
在这里插入图片描述
提示:

  • 0 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= intervals[i][0] <= intervals[i][1] <= 105
  • intervals 根据 intervals[i][0] 按 升序 排列
  • newInterval.length == 2
  • 0 <= newInterval[0] <= newInterval[1] <= 105

四、解题代码

class Solution {
public:
    vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
        intervals.push_back(newInterval);
        int n = intervals.size();
        sort(intervals.begin(), intervals.end(), 
        [&](vector<int> &a, vector<int> &b){
            return a[0] < b[0];
        });
        vector<vector<int>> res;
        int left = intervals[0][0]; 
        int right = intervals[0][1];
        for(int i = 1; i < n; ++i){
            if(intervals[i][0] <= right){
                right = max(right, intervals[i][1]);
            } else{
                res.push_back({left, right});
                left = intervals[i][0];
                right = intervals[i][1];
            }
        }
        res.push_back({left, right});
    return res;
    }
};

五、解题思路

(1) 将新的区间放入旧的区间当中。

(2) 剩下的问题与昨日的每日一题合并区间没有任何区别,不会的兄弟可以阅读一下该篇文章——2023-08-27 LeetCode每日一题(合并区间)

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)