[Leetcode 56, Hard] Merge intervals
2013-11-10 05:56
417 查看
Problem:
Given a collection of intervals, merge all overlapping intervals.
For example,
Given
return
Analysis:
1. Brute-force method.
2. Sort.
Solution:
Brute-force solution:
2. Need to make up.
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].
Analysis:
1. Brute-force method.
2. Sort.
Solution:
Brute-force solution:
bool isIntersection(Interval &int1, Interval &int2){ if(int1.end<int2.start || int2.end<int1.start) return false; return true; } void mergeIntervalsToFirst(Interval &int1, Interval &int2){ if(int1.start>int2.start) int1.start=int2.start; if(int1.end<int2.end) int1.end=int2.end; } vector<Interval> merge(vector<Interval> &intervals) { vector<Interval> rint; if(intervals.size()==0) return rint; int len=intervals.size(); bool isMerge=false; for(int i=0; i<len; ++i){ if(i==0) rint.push_back(intervals[0]); else{ int lenRint=rint.size(); for(int j=0; j<lenRint; ++j){ if(isIntersection(rint[j], intervals[i])){ mergeIntervalsToFirst(rint[j], intervals[i]); //Check after intervals whether to be included. std::vector<Interval>::iterator iter=rint.begin()+j+1; while(iter!=rint.end()){ if(isIntersection(rint[j], *iter)){ mergeIntervalsToFirst(rint[j], *iter); rint.erase(iter); }else ++iter; } isMerge=true; break; } } if(!isMerge) rint.push_back(intervals[i]); else isMerge=false; } } return rint; }
2. Need to make up.
相关文章推荐
- mysqld守护进程
- Merge Sorted Array [LeetCode]
- CPU Cache 学习(一)
- 高效建立健壮的Android应用-Maven Android 开发
- LeetCode题解:Gray Code
- LeetCode题解:Convert Sorted Array to Binary Search Tree
- Windows与linux双系统安装
- lib包含# #pragma comment
- LeetCode题解:Binary Tree Postorder Traversal
- Longest Consecutive Sequence 从无序数组中找最长的连续数字 @LeetCode
- socket相关知识
- 安卓升级提示 phoneGap APK软件更新提示
- python调用dll
- Remove Duplicates from Sorted List II 链表移除重复值@LeetCode
- cocos2d-x-2.2/samples/Cpp/SimpleGame/ 问题
- 搭建Titanium开发环境
- c++ 运算符的重载
- VMware Appliance的默认用户名和密码
- python常用
- 1110