Medium · System Design

Version control snapshot

Implement VersionControl over a key-value map whose version 0 is empty: set(key, value) creates the next version (the latest map with key set to value), get(key, version) returns (value, true) if key has a value in that version and (0, false) if it does not or the version does not exist, and currentVersion() returns the latest version number.

Examples

Example 1

{
  "ops": [
    {"kind": "set", "key": "a", "value": 1},
    {"kind": "set", "key": "b", "value": 2},
    {"kind": "get", "key": "a", "version": 0},
    {"kind": "get", "key": "b", "version": 1}
  ]
}

Output: [[0, false], [0, false]]

Example 2

{
  "ops": [
    {"kind": "set", "key": "a", "value": 1},
    {"kind": "set", "key": "b", "value": 2},
    {"kind": "set", "key": "a", "value": 9},
    {"kind": "get", "key": "a", "version": 1},
    {"kind": "get", "key": "a", "version": 3},
    {"kind": "get", "key": "b", "version": 1},
    {"kind": "get", "key": "b", "version": 3},
    {"kind": "get", "key": "a", "version": 4},
    {"kind": "currentVersion"}
  ]
}

Output: [[1, true], [9, true], [0, false], [2, true], [0, false], 3]

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