1# Runtime: 600 ms (Top 65.10%) | Memory: 33.5 MB (Top 72.09%)2class SnapshotArray:34def __init__(self, length: int):5self.snap_id = 06self.history = defaultdict(dict)78def set(self, index: int, val: int) -> None:9self.history[self.snap_id][index] = val1011def snap(self) -> int:12self.snap_id += 113return self.snap_id - 11415def get(self, index: int, snap_id: int) -> int:16for i in range(snap_id, -1, -1):17if index in self.history[i]:18return self.history[i][index]19return 0 # default value in case it wasn't set earlier