核心思想,额外空间,分三段处理,时间复杂度O(N)
/*
* @lc app=leetcode id=57 lang=cpp
*
* [57] Insert Interval
*/
// @lc code=start
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
vector<vector<int>> ans;
int N = intervals.size();
int loc = 0;
while(loc < N && newInterval[0] > intervals[loc][1]){
ans.push_back(intervals[loc++]);
}
while(loc < N && newInterval[1] >= intervals[loc][0]){
newInterval[0] = min(newInterval[0], intervals[loc][0]);
newInterval[1] = max(newInterval[1], intervals[loc++][1]);
}
ans.push_back(newInterval);
while(loc < N){
ans.push_back(intervals[loc++]);
}
return ans;
}
};
// @lc code=end
本文深入解析了区间插入算法的核心思想,介绍了如何通过分三段处理的方式,在不增加额外空间的情况下,实现时间复杂度为O(N)的高效算法。文章详细阐述了在给定一系列不重叠的区间中插入一个新的区间,并更新所有受影响区间的具体步骤。
590

被折叠的 条评论
为什么被折叠?



