352. Data Stream as Disjoint Intervals
[1, 1]
[1, 1], [3, 3]
[1, 1], [3, 3], [7, 7]
[1, 3], [7, 7]
[1, 3], [6, 7]class SummaryRanges {
public:
/** Initialize your data structure here. */
SummaryRanges() {
}
void addNum(int val) { // time: O(n)
vector<int> new_interval({val, val});
int i = 0, overlap = 0, n = intervals.size();
while (i < n) {
if (new_interval[1] + 1 < intervals[i][0]) break;
if (new_interval[0] <= intervals[i][1] + 1) {
new_interval[0] = min(new_interval[0], intervals[i][0]);
new_interval[1] = max(new_interval[1], intervals[i][1]);
++overlap;
}
++i;
}
if (overlap > 0) {
intervals.erase(intervals.begin() + i - overlap, intervals.begin() + i);
}
intervals.insert(intervals.begin() + i - overlap, new_interval);
}
vector<vector<int>> getIntervals() {
return intervals;
}
private:
vector<vector<int> > intervals;
};Last updated