[Leetcode] Merge Intervals
来源:互联网 发布:各种协议端口号 编辑:程序博客网 时间:2024/06/16 23:51
题目:
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]
.
思路:排序 + merge.
class Solution {public: struct compare { bool operator()(const Interval& a, const Interval& b) { //return true if a < b if (a.start == b.start) return a.end < b.end; else return a.start < b.start; } }; vector<Interval> merge(vector<Interval> &intervals) { vector<Interval> result; if ((int)intervals.size() < 1) return result; sort(intervals.begin(), intervals.end(), compare()); result.push_back(intervals[0]); for (int i = 1; i < (int)intervals.size(); ++i) { if (result.back().end >= intervals[i].start) { //merge if (result.back().end < intervals[i].end) { result.back().end = intervals[i].end; } } else { result.push_back(intervals[i]); } } return result; }};
总结:排序后,每次只需要考虑最后加入到结果中的那个区间和即将加入的区间,如果有交集,判断边界merge. 整个数组遍历一遍即可,复杂度O(n).
0 0
- LeetCode: Merge Intervals
- LeetCode Merge Intervals
- LeetCode: Merge Intervals
- [Leetcode] Merge Intervals
- leetcode 28: Merge Intervals
- Leetcode: Merge Intervals
- [LeetCode] Merge Intervals
- [LeetCode]Merge Intervals
- leetcode merge intervals
- [leetcode]Merge Intervals
- LeetCode-Merge Intervals
- [leetcode] Merge Intervals
- LeetCode - Merge Intervals
- 【leetcode】Merge Intervals
- leetcode Merge Intervals
- LeetCode Merge Intervals
- [LeetCode] Merge Intervals
- LeetCode | Merge Intervals
- 机器学习-深度学习(deep learning)
- C++函数的重载、覆盖和隐藏区别
- 被動語態 (Passive Voice)
- Linux中C/C++头文件一览
- GitHub上的一个神器
- [Leetcode] Merge Intervals
- iOS 图标尺寸及用途
- 【网络流】 HDU 4183 Pahom on Water 拆点
- 标准C++中string用法
- 对数组元素a[i]可以写成*(a+i)对指针pa在表达式pa[i]也可以写成*(pa+i)
- jsoup Cookbook(中文版)
- 干货:互联网协议入门(转)
- json-form
- C++的深拷贝与浅拷贝