Search⌘ K
AI Features

Solution: Data Stream as Disjoint Intervals

Understand how to implement a class that summarizes incoming non-negative integers into disjoint intervals. Learn to efficiently add numbers, merge overlapping ranges, and retrieve sorted intervals, optimizing for 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:

  • ...