LeetCode-笔记-57.插入区间

1、题目

给你一个 无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 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] 重叠。示例 3:
输入:intervals = [], newInterval = [5,7]
输出:[[5,7]]示例 4:
输入:intervals = [[1,5]], newInterval = [2,3]
输出:[[1,5]]示例 5:
输入:intervals = [[1,5]], newInterval = [2,7]
输出:[[1,7]]提示:
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来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/insert-interval
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2、分析题目

最开始的想法是二分查找,这样可以快速找到newInteral[0]与newInteral[1]在区间数组intervals中的位置,但经过实践发现这样实现比较繁琐,最终采用了模拟法。具体可以观察下图:

1、图中红色区域为intervals的区间 2、图中蓝色区域为newInteral插入的区间。3、建立新区间集合ans

设newInteral左端为left,右端为right。观察图像得合并后区间左端为left=min(left,intervals[i] [0]),右端为right=min(right,intervals[i] [1])。

遍历区间,当left>intervals[i] [1],ans尾部直接添加intervals,当right<intervals[i] [0],ans尾部直接添加一次{left,right},再添加intervals,都不满足则合并区间,遍历完成后如果{left,right}未添加,还需将其添加至尾部。

3、代码如下

class Solution {public:vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {int left = newInterval[0];int right = newInterval[1];int length = intervals.size();bool placed = false;vector<vector<int>> ans;for(int i=0;i<length;++i){if(intervals[i][0]>right){if(!placed){placed=true;ans.push_back({left,right});}ans.push_back(intervals[i]);}else if(intervals[i][1]<left){ans.push_back(intervals[i]);}else{left=min(left,intervals[i][0]);right=max(right,intervals[i][1]);}}if(!placed){ans.push_back({left,right});}return ans;}
};

LeetCode-笔记-57.插入区间相关推荐

  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. # 57. 插入区间

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

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

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

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

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

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

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

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

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

  8. leetcode 57. 插入区间

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

  9. LeetCode 57. 插入区间(python、c++)

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

最新文章

  1. 如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况
  2. 【刷算法】判断链表是否有环以及返回入环节点
  3. java 解析csv_java解析CSV文件(getCsvData 解析CSV文件 zipFiles 打成压缩包 exportObeEventDataExcel 前端页面响应)...
  4. Javascript变量函数浅谈
  5. css如何实现一个小三角形,用纯css写一个常见的小三角形
  6. java 百度账号注册界面_基于百度AI使用H5实现调用摄像头进行人脸注册、人脸搜索功能(Java)...
  7. 大数据驱动5G网络与服务优化
  8. 回调函数 线程_从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2...
  9. CentOS 6,7系统服务管理
  10. android个人日记本论文,个人心情日记本的设计与实现论文.doc
  11. 更换主板后 Win10 账户密钥集不存在 0x80090016问题解决
  12. 不小心把桌面上的计算机图标删了怎么办,如何删除桌面图标,不小心把桌面上的我的电脑图标删除了怎么办...
  13. windows服务器漏洞修复,Windows7系统漏洞怎么修复?
  14. 小京鱼京东智能服务平台
  15. 皮卡丘(pikachu) 文件上传
  16. java加壳工具_加壳工具 - virbox加密空间站 - OSCHINA - 中文开源技术交流社区
  17. mysql相关的dll_libmysql_d.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  18. 【Java基础语法】安排,写的太好了
  19. 计算机视觉英语论文,计算机视觉导论论文中英双语版(10页)-原创力文档
  20. Java 集合深入理解(14):Map 概述

热门文章

  1. R语言与数据分析(9)R与Excel
  2. 孙海汐组专访:去伪存真的过程一定不是一帆风顺的
  3. ESTL:新型多重扩增子测序法可实现污水中 SARS-CoV-2 RNA 的精确定量和病毒溯源...
  4. JGG:COVID-19感染导致儿童上呼吸道和肠道菌群持续失衡
  5. 是什么限制了我对Graphical abstract的想象力
  6. pandas使用set_table_attributes函数、display_html函数等在jupyter notebook中并排显示两个dataframe的内容(side by side)
  7. python使用np.argsort对一维numpy概率值数据排序获取倒序索引、获取的top索引(例如top2、top5、top10)索引二维numpy数组中对应的原始数据:原始数据概率最大的头部数据
  8. pandas为所有的列名添加后缀(add_suffix)
  9. 深度学习之核心要素:输入输出、目标函数、前向传播、后向传播、学习率、梯度下降
  10. 数据库事务的ACID特性及含义