[leetcode] 56. Merge Intervals 解题报告
2016-02-13 13:29
447 查看
题目链接:
Given a collection of intervals, merge all overlapping intervals.
For example,
Given
return
思路:要注意区间首先要排序, 然后维护一个当前的起点终点, 遍历所有的区间. 如果当前区间和我们维护的区间没有交集, 就将维护的那个区间加到结果集合中, 将其起点终点设为当前区间.
代码如下:
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].
思路:要注意区间首先要排序, 然后维护一个当前的起点终点, 遍历所有的区间. 如果当前区间和我们维护的区间没有交集, 就将维护的那个区间加到结果集合中, 将其起点终点设为当前区间.
代码如下:
/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */ class Solution { public: vector<Interval> merge(vector<Interval>& intervals) { if(intervals.size() ==0) return {}; auto cmp = [](Interval a, Interval b) { return a.start < b.start; }; sort(intervals.begin(), intervals.end(), cmp); vector<Interval> result; int start = intervals[0].start, end = intervals[0].end; for(int i = 1; i < intervals.size(); i++) { if(intervals[i].start > end) { result.push_back(Interval(start, end)); start = intervals[i].start, end = intervals[i].end; continue; } end=max(end, intervals[i].end); } result.push_back(Interval(start, end)); return result; } };
相关文章推荐
- jdbc连接数据库一方法
- hdu 5299 Circles Game
- 无线网卡驱动
- uva1368 - DNA Consensus String
- CDOJ 1268 Open the lightings
- Light OJ 1170 Counting Perfect BST (DP+数学)
- js替换指定字符串
- 299. Bulls and Cows
- 杭电1896 Stones(优先队列)
- 关于Runloop 补充-1(相关文档)
- 《IP地址介绍及为linux配置IP地址》
- 杭电1000:A + B Problem
- 此windows Installer 程序包有问题。完成此安装所需的一个DLL不能运行。请和...
- 【转载】VC中如何调用其他的可执行程序
- uva1339 - Ancient Cipher
- 03环信好友管理 - 获取好友列表
- 2016蓝桥杯算法训练——最大最小公倍数
- Building Maintainable Software-java篇之Keep Unit Interfaces Small
- leetcode(31) Next Permutation
- 人日抒怀