LeetCode Merge Intervals O(n) complexity
/**
* 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:
static bool myfunc(const Interval &a, const Interval &b){
return (a.start < b.start);
}
vector<Interval> merge(vector<Interval>& intervals) {
int i,j;
vector <Interval> ans;
if(intervals.size()==0)
return ans;
sort(intervals.begin(),intervals.end(),Solution :: myfunc);
vector < Interval > :: iterator it,it1;
it=intervals.begin();
it1=intervals.begin();
it1++;
while(it!=intervals.end() && (it1)!=intervals.end()){
if((it)->end < (it1)->start){
ans.push_back((*it));
it=it1;
it1++;
}
else if((it)->end >= (it1)->end){
it1++;
}
else
{
(it)->end=(it1)->end;
it1++;
}
}
if(it!=intervals.end())
ans.push_back((*it));
return ans;
}
};
No comments:
Post a Comment