/**
* 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 SummaryRanges {
public:
/** Initialize your data structure here. */
SummaryRanges() {
inters = vector<Interval>();
n=;
//numbers = vector<int>();
}
void addNum(int val) {
++n;
vector<Interval>::iterator it=inters.begin();
while(it!=inters.end()){
int start=it->start;
int end=it->end;
if(val>=start&&val<=end)
break;
if(val==start-){
it->start=val;
break;
}
if(val==end+){
it->end=val;
break;
}
++it;
}
if(it==inters.end()){
Interval temp=Interval(val,val);
inters.push_back(temp);
}
}
static bool compare(Interval i1,Interval i2){
return i1.start<=i2.start;
}
vector<Interval> getIntervals() {
//conbine those intervals
sort(inters.begin(),inters.end(),compare);
for(int i=;i<inters.size()-;){
if(inters[i].end>=inters[i+].start-&&inters[i].end<=inters[i+].end){
inters[i].end=inters[i+].end;
inters.erase(inters.begin()+i+);
}else
++i;
}
return inters;
}
private:
vector<Interval> inters;
int n;
//vector<int> numbers;
};
/**
* Your SummaryRanges object will be instantiated and called as such:
* SummaryRanges obj = new SummaryRanges();
* obj.addNum(val);
* vector<Interval> param_2 = obj.getIntervals();
*/