给定一个非负整数的数据流输入 a1,a2,…,an,…,将到目前为止看到的数字总结为不相交的区间列表。
例如,假设数据流中的整数为 1,3,7,2,6,…,每次的总结为:
[1, 1]
[1, 1], [3, 3]
[1, 1], [3, 3], [7, 7]
[1, 3], [7, 7]
[1, 3], [6, 7]
进阶:
如果有很多合并,并且与数据流的大小相比,不相交区间的数量很小,该怎么办?
思路
避免添加大量重复数字,且又需要有序,用set
代码
class SummaryRanges {
set<int> nums;
public:
SummaryRanges() {
}
void addNum(int val) {
nums.insert(val);
}
vector<vector<int>> getIntervals() {
vector<vector<int>> result;
if(nums.empty()) return result;
result.push_back({*nums.begin(),*nums.begin()});
auto it=nums.begin();
advance(it, 1);
for(it;it!=nums.end();it++){
int num=*it;
if(num-result[result.size()-1][1]==1){
result[result.size()-1][1]=num;
}else{
result.push_back({num,num});
}
}
return result;
}
}; 
京公网安备 11010502036488号