Search⌘ K
AI Features

Solution: Data Stream as Disjoint Intervals

Explore how to summarize a stream of integers into disjoint intervals by merging and updating intervals as new numbers arrive. Learn to implement a solution that efficiently manages interval boundaries in sorted order, handles merging of intervals, and provides quick retrieval of current intervals. This lesson helps you understand the intervals pattern and its use in real-time data stream processing with a focus on time and space complexity.

Statement

You are given a stream of non-negative integers a1,a2,,ana_1, a_2, \dots, a_n. At any point, you need to summarize all numbers seen so far as a list of disjoint intervals.

Your task is to implement the Summary Ranges class, where:

  • Constructor: Initializes the Summary Ranges object with an empty stream.

  • Add Num(int value): Adds the integer value to the stream.

  • Get Intervals(): Returns the current summary of numbers as a list of disjoint intervals [start_i, end_i], sorted by start_i.

Note: Each number belongs to exactly one interval. Intervals must merge whenever new numbers connect or extend existing ones, and duplicate insertions should not affect the summary.

Constraints:

  • ...