Hard · System Design

Range Module

Implement RangeModule: addRange(left, right) starts tracking every real number in [left, right), queryRange(left, right) returns whether every number in [left, right) is currently tracked, and removeRange(left, right) stops tracking [left, right).

Examples

Example 1

{
  "ops": [
    {"kind": "add", "left": 10, "right": 20},
    {"kind": "add", "left": 15, "right": 25},
    {"kind": "query", "left": 12, "right": 18},
    {"kind": "remove", "left": 14, "right": 16}
  ]
}

Output: [true]

Example 2

{
  "ops": [
    {"kind": "add", "left": 10, "right": 20},
    {"kind": "add", "left": 20, "right": 30},
    {"kind": "query", "left": 15, "right": 25},
    {"kind": "remove", "left": 14, "right": 16},
    {"kind": "query", "left": 12, "right": 18},
    {"kind": "query", "left": 16, "right": 30},
    {"kind": "remove", "left": 5, "right": 12},
    {"kind": "query", "left": 10, "right": 13},
    {"kind": "query", "left": 12, "right": 14}
  ]
}

Output: [true, false, true, false, true]

Rebuild it in the studio

Read every interview problem free. Ten rooms need no account. A token opens a problem in full — Pro never counts.

More System Design problems