第10周Merge Intervals
来源:互联网 发布:ug四轴联动编程实例 编辑:程序博客网 时间:2024/05/22 22:32
Merge Intervals
Leetcode algorithms problem 56:Merge Intervals
问题描述
Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].问题提示
无
思路
1.直接用迭代器进行两次遍历,当两边区间重叠时父遍历更新数据,子遍历使用erase函数删除数据,最后进行排序,提交显示超时,遂放弃
2.查看题目的讨论得知思路:先将原vector进行排序,再从最初的数据开始维护一个区间,遍历排序后的vector,当区间重叠时更新维护的最后一个区间,不重叠则将新数据作为维护的最后一个区间。
代码
class Solution {public: vector<Interval> merge(vector<Interval>& intervals) { if (intervals.empty()) return vector<Interval>{}; vector<Interval> result; sort(intervals.begin(), intervals.end(), [](Interval a, Interval b){return a.start < b.start;}); result.push_back(intervals[0]); for (int i = 1; i < intervals.size(); i++) { if (result.back().end < intervals[i].start) { result.push_back(intervals[i]); }else { result.back().end = max(result.back().end, intervals[i].end); } } return result; }};
时间复杂度: O(nlogn)
空间复杂度: O(n)
代码重点
c++11 引入了LAMBDA
第6行中的[](Interval a,Interval b {returna.start < b.start;} 相当于python当中的lambda
阅读全文
0 0
- 第10周Merge Intervals
- LeetCode第56题之Merge Intervals
- LeetCode Exercise 10: Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- merge intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- redis安装教程——用于笔记
- 多项式加法和乘法
- CentOS7如何关闭防火墙
- 对ZXing进行封装,整合成一个调用简单的Scanner接口
- opencv中关于Mat类的一些问题
- 第10周Merge Intervals
- 【utils】java中调用cmd实现把jar包导入maven管理
- PyCharm引入自定义类报错
- mysql唯一索引的一个小常识--Duplicate entry 'XXX' for key 'XXX'
- vue-router菜鸟进阶!(重定向和别名)
- Cannot determine embedded database driver class for database type NONE
- BZOJ3594 [Scoi2014]方伯伯的玉米田
- HDU3549 Flow Problem
- C语言访问webservice小例子