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每日一题(合并区间)