思路:
数组保存所有数。同时,每个set只记录增量,通过二分查找得到最近snap的数。
关键点,对于没有set的数,即使snap了,也和上一个snap_id是一样的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
import bisect
class :
def __init__(self, length: int): self.snaps = [[[-1,0]] for i in range(length)] self.snap_id = 0
def set(self, index: int, val: int) -> None: self.snaps[index].append([self.snap_id,val]) def snap(self) -> int: self.snap_id+=1 return self.snap_id-1
def get(self, index: int, snap_id: int) -> int: idx = bisect.bisect_right(self.snaps[index],[snap_id,float('inf')])-1 return self.snaps[index][idx][1]
|
近期评论