352. 将数据流变为多个不相交区间
给定一个非负整数的数据流输入 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;
    }
}; 
 查看3道真题和解析
查看3道真题和解析 投递用友等公司10个岗位
投递用友等公司10个岗位