给出一个区间的集合,请合并所有重叠的区间。

示例 1:

输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-intervals
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
——————
解题思路:首先对给定数组进行排序,排序后进行区间重叠判断。

创建两个指标beg和en,beg是遍历至当前区间的最小值,en是遍历至当前区间的最大值。

当新来一个区间时,如果该区间的起始点的值小于en值,且同时该区间的终点值大于en值,则更新en值的状态。

如果当前区间的最小值大于en的值,则将[beg,en]区间放进二维集合中。

然后更新beg和en的值,继续遍历,直到遍历结束。

class Solution {public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if(intervals.size()==0||intervals[0].size()==0)  # 如果二维集合为空,直接返回return intervals;sort(intervals.begin(),intervals.end());  # 对二维集合进行排序vector<vector<int>> dp;  # 创建一个二维集合用于存储重叠后的区间int beg = intervals[0][0];  # 创建一个临时变量,用于标记区间的起始值int en = intervals[0][1];  # 创建一个临时变量,用于标记区间的终点值for(int i=0;i<intervals.size();++i)  # 变量排序后的每一个区间{if(intervals[i][0]<=en)  # 如果该区间的起始值小于当前en的值{if(intervals[i][1]>en)  # 判断该区间的终点值是否大于当前的en值,如果大于,则更新当前en的值en = intervals[i][1];}else  # 如果区间的起始值大于当前的en值,则可以将beg和en组成的区间放进二维集合dp中{dp.push_back({beg,en});beg = intervals[i][0];  # 更新beg的值en = intervals[i][1];  # 更新en的值}if(i==intervals.size()-1)  #如果遍历到最后一个数,直接将最后一个beg和en组成的区间放进二维区间中dp.push_back({beg,en});}return dp;  # 返回二维区间}
};

leetcode - 56. 合并区间相关推荐

  1. leetcode 56. 合并区间

    leetcode 56. 合并区间 题目描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合并所有重叠的区间, ...

  2. LeetCode 56 合并区间

    56. 合并区间 难度中等1153收藏分享切换为英文接收动态反馈 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合 ...

  3. LeetCode 56. 合并区间(优先队列)

    文章目录 1. 题目信息 2. 解题 2.1 报错的答案 2.2 优先队列解题 1. 题目信息 给出一个区间的集合,请合并所有重叠的区间. 示例 1:输入: [[1,3],[2,6],[8,10],[ ...

  4. Leetcode 56.合并区间 (每日一题 20210708)

    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入 ...

  5. LeetCode 56. 合并区间(合并区间+排序)

    题目描述 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 ...

  6. 56. 合并区间 排序数组

    https://www.b2bchain.cn/6393.html 56. 合并区间首先对开始元素进行排序 之后比较结尾元素判断是否可以加入合并集合//给出一个区间的集合,请合并所有重叠的区间. // ...

  7. 56. 合并区间 golang

    56. 合并区间 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: ...

  8. 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间

    本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...

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

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

最新文章

  1. debian10 简单的bash脚本监控apache运行状态
  2. python怎么删除特定文件_如何使用python从文件中删除特定行?
  3. 程序员用5分钟,把一个400多MB的苹果安装包削掉了187MB
  4. 暑期 2021 | Serverless Devs 最全项目申请攻略来啦!
  5. uiautomator日志文件转换为xml格式文件
  6. [笔试面试题] 8-面向对象篇
  7. 卷积码主要是对抗_【零基础学会LTE】【3】LTE 36.212 咬尾卷积码详解
  8. [Tools] JD-GUI(Java Decompiler)
  9. hadoop 权威指南 HIVE
  10. 计算机考研浙江理工和江苏大学,杭州电子科技大和浙江理工大学这两所大学怎么样?哪所好?...
  11. java 前后端分离思想与实现
  12. 方块 游戏界面java_JAva 判断方块游戏清除方法
  13. 手游直播到底难在哪里?
  14. 计算机专业常用英语(转)
  15. webbrowser php,webBrowser C#是实现的网页浏览器,能够打开各种 ,调用 搜索。 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
  16. 感谢韩磊为《走出软件作坊》作序
  17. 中国***江湖之八大门派
  18. PDFObject实现pdf文件预览
  19. Redis学习7之Predis连接redis过程和测试
  20. base64 string 放不下_用 Base64 编码插入 Markdown 图片

热门文章

  1. 使用VS2010代码分析功能增强ASP.NET应“.NET研究”用程序安全
  2. Overflow属性详解(转载)
  3. Dns-prefetch DNS 预解析优化页面加载速度
  4. Docker 使用 docker push 命令将镜像推送到 Docker Hub 服务器上
  5. MyBatis 动态 SQL 底层原理分析
  6. MySQL学习——操作存储过程
  7. git配置远程仓库,同时配置github、gitee、gitlab,完美解决方案
  8. webpack4 filemanager-webpack-plugin 打zip包失败问题
  9. chrome关闭自动更新 mac
  10. 【C语言】创建一个函数,判断某一正整数是否为水仙花数,并调用这个函数找出1000以内所有水仙花数...