文章目录

  • 1. 题目信息
  • 2. 解题
    • 2.1 报错的答案
    • 2.2 优先队列解题

1. 题目信息

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

示例 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先按照区间左端点,从小到大排序区间
  • 依次检查区间是否有重叠,有重叠取两个区间的较大的右端点
  • 不重叠,以下一个区间开始重复上面过程

2.1 报错的答案


以下代码,通过了168个测试,最后一个报错,Line 923: Char 34: runtime error: reference binding to null pointer of type 'value_type' (stl_vector.h),哪位大佬看到了,帮忙看看什么原因,还没解决。

  • 解决上面最后一个例子卡住:
  • comp比较函数里面写为return a[0] < b[0];,没有等于号
bool comp(vector<int> &a, vector<int> &b)
{return a[0] <= b[0];
}
class Solution {public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if(intervals.empty())return {};sort(intervals.begin(), intervals.end(), comp);vector<vector<int>> ans;int left = intervals[0][0], right = intervals[0][1];for(int i=1; i<intervals.size(); ++i){if(intervals[i][0] <= right)right = max(right, intervals[i][1]);else{ans.push_back({left,right});left = intervals[i][0];right = intervals[i][1];}}ans.push_back({left,right});return ans;}
};

2.2 优先队列解题

class Solution {public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if(intervals.empty())return {};priority_queue<vector<int>,vector<vector<int> >, cmp> q;for(auto it = intervals.begin(); it != intervals.end(); ++it){q.push(*it);}vector<vector<int>> ans;int left = q.top()[0], right = q.top()[1];q.pop();while(!q.empty()){if(q.top()[0] <= right)right = max(right, q.top()[1]);else{ans.push_back({left,right});left = q.top()[0];right = q.top()[1];}q.pop();}ans.push_back({left,right});return ans;}struct cmp{bool operator()(vector<int> &a, vector<int> &b){return a[0] > b[0];//小顶堆}};
};

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: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] ...

  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. 用animation的steps属性制作帧动画
  2. excel两个表格数据对比_Excel小技巧:实例教你快速对比多个表格的差异
  3. mysql 将查询所得结果集的某一字段拼接成字符串
  4. 【转】ABP源码分析三十七:ABP.Web.Api Script Proxy API
  5. java中什么是task_20171018java总结——Spring任务调度task:scheduled-tasks
  6. 7个习惯可以改变一个人和他的一生
  7. WampServer
  8. js中调用vue中的方法
  9. Flink-org.apache.flink.api.common.functions.AggregateFunction
  10. 设置代理_PC客户端爬虫,这样设置代理就对了
  11. java开发注意事项
  12. 树展示 移动端_企业快速搭建移动BI轻应用,怎么少得了这款BI工具
  13. 【SEAN的日志】如何突破微信小程序2M限制?
  14. 谷歌浏览器下面的任务栏不见了
  15. 图片的 orientation 属性
  16. Weixin4j微信开发网页授权获取openid案例
  17. AOP术语、SpringAOP
  18. 网站分析行业的“前途”和“钱途”
  19. Chrome | BookMarks
  20. 刚刚,数学界“诺奖”Abel Prize迎来首位女性得主

热门文章

  1. 深入浅出WPF之Binding的使用(二)
  2. c语言的class,Objective-C中Class的本质
  3. 以下题目需要当场编写实现,,答案自己写
  4. Mysql中常用的函数汇总
  5. 解决Eclipse 项目报错:Unbound classpath container
  6. Javascript实现合并单元格
  7. stl algorithm -- sort ,unique
  8. 1024看到这篇文章的程序员,能不能把你的电脑桌面右下角截图回复
  9. mysql安装包脚本之家_CentOS 7 MySQL5.7 TAR包解压 全自动化脚本
  10. STM32F7xx —— Timer