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.