Search⌘ K
AI Features

Solution: Data Stream as Disjoint Intervals

Understand how to summarize a stream of integers as disjoint intervals using the intervals design pattern. Learn to implement a Summary Ranges class that merges and updates intervals efficiently during a data stream. This lesson helps you grasp how to manage and maintain sorted, non-overlapping intervals, optimizing for common coding interview problems related to interval merging and insertion.

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:

  • ...