leetcode 刷题之路 32 Merge Intervals
2014-07-30 21:00
417 查看
Given a collection of intervals, merge all overlapping intervals.
For example,
Given
return
给定一组整数对代表的区间,合并重合的区间。
我的做法是首先以区间的起始位置为基准进行排序,遍历排序后的区间数组,对于相邻的位置i和i+1,当区间i的右边界小于区间i+1的左边界时,两个区间不重叠,把区间i保存到结果数组中,当区间i的左边界大于区间i+1的右边界时,把两个区间合并,合并后的区间覆盖到区间i+1上,然后以区间i+1为当前区间进行处理,重复以上步骤直到数组结尾,数组的最后一个区间要么是和其前面的区间和并的结果,要么不和前面的区间重叠,两种情况都是要保存到结果数组中,最后返回结果数组。
代码:
For example,
Given
[1,3],[2,6],[8,10],[15,18],
return
[1,6],[8,10],[15,18].
给定一组整数对代表的区间,合并重合的区间。
我的做法是首先以区间的起始位置为基准进行排序,遍历排序后的区间数组,对于相邻的位置i和i+1,当区间i的右边界小于区间i+1的左边界时,两个区间不重叠,把区间i保存到结果数组中,当区间i的左边界大于区间i+1的右边界时,把两个区间合并,合并后的区间覆盖到区间i+1上,然后以区间i+1为当前区间进行处理,重复以上步骤直到数组结尾,数组的最后一个区间要么是和其前面的区间和并的结果,要么不和前面的区间重叠,两种情况都是要保存到结果数组中,最后返回结果数组。
代码:
/** * 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) { vector<Interval> vi; if (intervals.empty()) return vi; sort(intervals.begin(), intervals.end(), cmp); for (int i = 0; i < intervals.size()-1; i++) { if (intervals[i].end < intervals[i + 1].start) vi.push_back(intervals[i]); else { if (intervals[i].end>intervals[i + 1].end) intervals[i + 1].end = intervals[i].end; intervals[i + 1].start = intervals[i].start; } } vi.push_back(intervals[intervals.size()-1]); } bool static cmp(const Interval& i1, const Interval& i2) { return i1.start < i2.start; } };
相关文章推荐
- 32_leetcode_Merge Intervals
- LeetCode--Merge Intervals
- leetcode 刷题之路 39 Remove Nth Node From End of List
- LeetCode 32. Longest Valid Parentheses
- LeetCode—Merge Intervals
- leetcode 刷题之路 64 Construct Binary Tree from Inorder and Postorder Traversal
- leetcode 刷题之路 70 earch Insert Position 二分查找插入位置
- leetcode 刷题之路 73 Best Time to Buy and Sell Stock III
- LeetCode刷题之路(二)——easy的开始
- LeetCode_56---Merge Intervals
- 【LeetCode】Merge Intervals
- leetcode 刷题之路 95 N-Queens II
- LeetCode[Sort]: Merge Intervals
- leetcode 28: Merge Intervals
- Leetcode219: Merge Intervals
- 【leetcode】Array—— Merge Intervals(56)
- [Leetcode] Merge Intervals (Java)
- leetcode:Merge Intervals
- leetcode 21. Merge Two Sorted Lists(C语言,合并两个排序的链表为一个排序链表)32
- (java)leetcode-32