1146. 快照数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class SnapshotArray:
def __init__(self, length: int):
self.id_lst = [[-1] for _ in range(length)]
self.value_lst = [[0] for _ in range(length)]
self.snap_id = 0

def set(self, index: int, val: int) -> None:
if self.id_lst[index][-1] == self.snap_id:
self.value_lst[index][-1] = val
else:
self.id_lst[index].append(self.snap_id)
self.value_lst[index].append(val)

def snap(self) -> int:
self.snap_id += 1
return self.snap_id-1

def get(self, index: int, snap_id: int) -> int:
i = bisect.bisect_right(self.id_lst[index], snap_id)
return self.value_lst[index][i-1]


# Your SnapshotArray object will be instantiated and called as such:
# obj = SnapshotArray(length)
# obj.set(index,val)
# param_2 = obj.snap()
# param_3 = obj.get(index,snap_id)