LeetCode 57. 插入区间(python、c++)
题目描述
给出一个无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
示例 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] 重叠。
题解
将该点加入到原来的数组中
1.首先将所有区间按照 start 排序,start 相同的按照 end 排序。
2.从头开始遍历所有区间,并求他们的并集。定义 cur 表示当前一些区间的并集。
3.若发现当前遍历到的区间 start 严格大于 cur 的 end,则当前并集需要加入到答案数组中,且更新区间并集 cur 为当前区间。
4.若发现当前遍历到的区间 end 严格大于 cur 的 end,则更新 cur 的 end 为当前区间的 end。
时间复杂度
排序的时间复杂度为 O(nlogn),排序后只需要线性扫描,故总时间复杂度为 O(nlogn)。
c++代码:
class Solution {public:vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {intervals.push_back(newInterval);sort(intervals.begin(), intervals.end());int n = intervals.size();vector<vector<int>> ans;for(int i = 0; i < n; i++){int l = intervals[i][0], r = intervals[i][1];if(!ans.size() || ans.back()[1] < l)ans.push_back({l, r});elseans.back()[1] = max(ans.back()[1], r);}return ans;}
};
python代码:
class Solution:def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:intervals.append(newInterval)intervals.sort(key = lambda x: x[0])ans = []for i in intervals:if not ans or ans[-1][1] < i[0]:ans.append(i)else:ans[-1][1] = max(ans[-1][1], i[1])return ans
LeetCode 57. 插入区间(python、c++)相关推荐
- Python描述 LeetCode 57. 插入区间
Python描述 LeetCode 57. 插入区间 大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术博文,主要包括前端开发.py ...
- leetcode 57. 插入区间 58. 最后一个单词的长度
leetcode 57. 插入区间 58. 最后一个单词的长度 57. 插入区间 难度中等512收藏分享切换为英文接收动态反馈 给你一个 无重叠的 *,*按照区间起始端点排序的区间列表. 在列表中插入 ...
- LeetCode 57. 插入区间(合并区间+排序)(区间重叠问题汇总)
题目描述 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: interval ...
- LeetCode 57. 插入区间(一次遍历)
1. 题目 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: interva ...
- leetcode 57. 插入区间
给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入:intervals = [[ ...
- LeetCode-笔记-57.插入区间
LeetCode-笔记-57.插入区间 1.题目 给你一个 无重叠的 ,按照区间起始端点排序的区间列表.在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间) ...
- # 57. 插入区间
57. 插入区间 给你一个 无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入:inte ...
- int类型年月怎么区间查询_LeetCode 力扣官方题解 | 57.插入区间
点击上方蓝字设为星标 下面开始今天的学习-力扣 57. 插入区间(点击文末阅读原文查看题目)题目描述给出一个无重叠的 ,按照区间起始端点排序的区间列表.在列表中插入一个新的区间,你需要确保列表中的区 ...
- LeetCode 55跳跃游戏56合并区间57插入区间
原创公众号:bigsai 希望和优秀的你做朋友,感觉不错还请一键三连. 回复进群即可加入和200+人一起打卡.上周打卡: LeetCode 47全排列Ⅱ&48旋转图像 LeetCode 49字 ...
最新文章
- 数据结构中几种经典排序简介
- marlin固件烧录教程_小白穿越机教程-刷固件 | 穿越机如何刷最新的betaflight固件教程...
- Spring整合Mongodb,Maven的依赖,Spring配置,MongoDB的公共操作类,使用SpringMVC的Controller进行测试并返回结果的案例
- web----DNS解析
- 大数据_Flink_Java版_数据处理_时间语义(1)_时间语义概念---Flink工作笔记0049
- VHDL——分频器设计
- 如何查找oracle漏洞对应补丁号,Oracle 漏洞补丁如何查找下载并打补丁,什么漏洞都可用Opatch?...
- 16种英语时态总结归纳
- Google高级搜索命令
- 【笔记】初读《SICP》:递归和迭代
- (四)Ps快速选择/魔棒
- 图像处理中涉及的灰度图、彩色图以及深度图概念
- 统计推断——假设检验——方差分析
- 暑假积分不等式初探(未完)
- 【计算广告】移动设备 效果类广告 归因方式
- python for ArcGIS 绘制南京市板块地图
- Hololens开发入门一:初识Hololens
- 尚硅谷_Redis6笔记
- 矩阵乘法精解!(一图胜千言)
- 万字长文详解:2023年手机银行MAU和AUM双增实操宝典