3
self.numbersByIndex = {}4
self.numberIndexes = defaultdict(set)5
self.numberIndexesHeap = defaultdict(list)7
def change(self, index: int, number: int) -> None:8
if index in self.numbersByIndex:9
if number != self.numbersByIndex[index]:10
self.numberIndexes[self.numbersByIndex[index]].remove(index)11
self.numbersByIndex[index] = number12
self.numberIndexes[number].add(index)13
heappush(self.numberIndexesHeap[number], index)15
self.numbersByIndex[index] = number16
self.numberIndexes[number].add(index)17
heappush(self.numberIndexesHeap[number], index)19
def find(self, number: int) -> int:21
self.numberIndexesHeap[number]22
and self.numberIndexesHeap[number][0] not in self.numberIndexes[number]25
self.numberIndexesHeap[number]26
) # make sure the smallest index in heap is still an index for number28
self.numberIndexesHeap[number][0] if self.numberIndexesHeap[number] else -1