leetcode之Merge Intervals
2014-06-07 21:46
162 查看
原题如下:
Given a collection of intervals, merge all overlapping intervals.
For example,
Given
return
关键还是思路,当理解了思路时,这道题并不难,实现思路如下:首先对向量进行排序,这里需要利用自定义比较函数,然后利用left和right分别存放已扫描过的但还未进入vector中的数对的start值和end值,针对当前数对,判断其start值是否与之前的right有重合,即当前数对的start<=right?,如果有重合则更新之前保存的right值right = max(right,intervals[i].end);,否则判断left和right是否是数对(即left是否为-1),是数对的话存入vector,同时更新left和right值。循环结束后要对最后一个left和right数对进行判断。
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].
关键还是思路,当理解了思路时,这道题并不难,实现思路如下:首先对向量进行排序,这里需要利用自定义比较函数,然后利用left和right分别存放已扫描过的但还未进入vector中的数对的start值和end值,针对当前数对,判断其start值是否与之前的right有重合,即当前数对的start<=right?,如果有重合则更新之前保存的right值right = max(right,intervals[i].end);,否则判断left和right是否是数对(即left是否为-1),是数对的话存入vector,同时更新left和right值。循环结束后要对最后一个left和right数对进行判断。
struct Interval { int start; int end; Interval() : start(0), end(0) {} Interval(int s, int e) : start(s), end(e) {} }; bool cmp(Interval a,Interval b){ return a.start < b.start; } class Solution { public: vector<Interval> merge(vector<Interval> &intervals) { vector<Interval>v; sort(intervals.begin(),intervals.end(),cmp); int left = -1,right = -1; for(int i = 0; i < intervals.size(); i++){ if(intervals[i].start <= right) right = max(right,intervals[i].end); else{ if(left != -1){ v.push_back(Interval(left,right)); } left = intervals[i].start; right = intervals[i].end; } } if(left != -1){ v.push_back(Interval(left,right)); } return v; } };
相关文章推荐
- 32_leetcode_Merge Intervals
- [leetcode] Merge Intervals
- LeetCode 56 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 排序sort
- leetcode——Merge Intervals
- LeetCode: Merge Intervals [055]
- leetcode - Merge Intervals
- leetcode - Merge Intervals
- [LeetCode][Java] Merge Intervals
- LeetCode: Merge Intervals
- leetcode:Merge Intervals(合并相交集合) 【面试算法题】
- LeetCode: Merge Intervals
- [Leetcode] Merge Intervals