题目描述

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

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

示例 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++)相关推荐

  1. Python描述 LeetCode 57. 插入区间

    Python描述 LeetCode 57. 插入区间   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术博文,主要包括前端开发.py ...

  2. leetcode 57. 插入区间 58. 最后一个单词的长度

    leetcode 57. 插入区间 58. 最后一个单词的长度 57. 插入区间 难度中等512收藏分享切换为英文接收动态反馈 给你一个 无重叠的 *,*按照区间起始端点排序的区间列表. 在列表中插入 ...

  3. LeetCode 57. 插入区间(合并区间+排序)(区间重叠问题汇总)

    题目描述 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: interval ...

  4. LeetCode 57. 插入区间(一次遍历)

    1. 题目 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: interva ...

  5. leetcode 57. 插入区间

    给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入:intervals = [[ ...

  6. LeetCode-笔记-57.插入区间

    LeetCode-笔记-57.插入区间 1.题目 给你一个 无重叠的 ,按照区间起始端点排序的区间列表.在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间) ...

  7. # 57. 插入区间

    57. 插入区间 给你一个 无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入:inte ...

  8. int类型年月怎么区间查询_LeetCode 力扣官方题解 | 57.插入区间

    点击上方蓝字设为星标 下面开始今天的学习-力扣  57. 插入区间(点击文末阅读原文查看题目)题目描述给出一个无重叠的 ,按照区间起始端点排序的区间列表.在列表中插入一个新的区间,你需要确保列表中的区 ...

  9. LeetCode 55跳跃游戏56合并区间57插入区间

    原创公众号:bigsai 希望和优秀的你做朋友,感觉不错还请一键三连. 回复进群即可加入和200+人一起打卡.上周打卡: LeetCode 47全排列Ⅱ&48旋转图像 LeetCode 49字 ...

最新文章

  1. 数据结构中几种经典排序简介
  2. marlin固件烧录教程_小白穿越机教程-刷固件 | 穿越机如何刷最新的betaflight固件教程...
  3. Spring整合Mongodb,Maven的依赖,Spring配置,MongoDB的公共操作类,使用SpringMVC的Controller进行测试并返回结果的案例
  4. web----DNS解析
  5. 大数据_Flink_Java版_数据处理_时间语义(1)_时间语义概念---Flink工作笔记0049
  6. VHDL——分频器设计
  7. 如何查找oracle漏洞对应补丁号,Oracle 漏洞补丁如何查找下载并打补丁,什么漏洞都可用Opatch?...
  8. 16种英语时态总结归纳
  9. Google高级搜索命令
  10. 【笔记】初读《SICP》:递归和迭代
  11. (四)Ps快速选择/魔棒
  12. 图像处理中涉及的灰度图、彩色图以及深度图概念
  13. 统计推断——假设检验——方差分析
  14. 暑假积分不等式初探(未完)
  15. 【计算广告】移动设备 效果类广告 归因方式
  16. python for ArcGIS 绘制南京市板块地图
  17. Hololens开发入门一:初识Hololens
  18. 尚硅谷_Redis6笔记
  19. 矩阵乘法精解!(一图胜千言)
  20. 万字长文详解:2023年手机银行MAU和AUM双增实操宝典

热门文章

  1. 从文档流角度理解浏览器页面渲染引擎对元素定位的解析
  2. 操作文件的实用类,删除目录,清空目录,删除文件
  3. web service 学习 2 -- 什么时候应该使用web service
  4. kmeans中的k的含义_《K-means》知识点与思考
  5. springboot2源码1-SpringApplication实例化
  6. Java经典算法50道题
  7. java程序猿总结出来的经验
  8. 计算机网络学习笔记--网络层知识点整理
  9. ArcEngine中shp中先加入要素然后删除一部分要素后,放大图形后不显示的问题解决方法...
  10. 如何在Linux系统上刷抖音