给定一个非负整数的数据流输入 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]
代码
class SummaryRanges {
public:
SummaryRanges() {}
void addNum(int val) {
Interval cur(val, val);
vector<Interval> res;
int pos = 0;
for (auto a : v) {
if (cur.end + 1 < a.start) {
res.push_back(a);
} else if (cur.start > a.end + 1) {
res.push_back(a);
++pos;
} else {
cur.start = min(cur.start, a.start);
cur.end = max(cur.end, a.end);
}
}
res.insert(res.begin() + pos, cur);
v = res;
}
vector<Interval> getIntervals() {
return v;
}
private:
vector<Interval> v;
};