352. 将数据流变为多个不相交区间 力扣(困难) 我做的好像不太一样,直接用了set

352. 将数据流变为多个不相交区间

给你一个由非负整数 a1, a2, ..., an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表。

实现 SummaryRanges 类:

SummaryRanges() 使用一个空数据流初始化对象。
void addNum(int val) 向数据流中加入整数 val 。
int[][] getIntervals() 以不相交区间 [starti, endi] 的列表形式返回对数据流中整数的总结。

题解:https://leetcode-cn.com/problems/data-stream-as-disjoint-intervals/solution/acmjin-pai-ti-jie-tu-jie-dian-he-qu-jian-horp/

代码:

class SummaryRanges {
private:
    set<int> s;
public:
    SummaryRanges() {
        s.clear();
    }
    
    void addNum(int val) {
     s.insert(val);
    }
    
    vector<vector<int>> getIntervals() {
    vector<vector<int>> res;
    int pre=-2;
    int ss=-1;
    for(auto i:s)
    { 
        if(i!=pre+1) 
        {
            if(pre!=-2) res.push_back({ss,pre}); 
            pre=i; 
            ss=i;
        } else pre=i; 
    }
    res.push_back({ss,pre});
    return res;
    }
};

/**
 * Your SummaryRanges object will be instantiated and called as such:
 * SummaryRanges* obj = new SummaryRanges();
 * obj->addNum(val);
 * vector<vector<int>> param_2 = obj->getIntervals();
 */
原文地址:https://www.cnblogs.com/stepping/p/15386450.html