File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 1+ class NumberContainers :
2+
3+ def __init__ (self ):
4+ self .data = {}
5+ self .indicies_values = {}
6+
7+ def change (self , index : int , number : int ) -> None :
8+ if number not in self .data :
9+ self .data [number ] = []
10+ heapq .heappush (self .data [number ], index )
11+
12+ if index not in self .indicies_values :
13+ self .indicies_values [index ] = number
14+ return
15+
16+ prev_val = self .indicies_values [index ]
17+ self .indicies_values [index ] = number
18+
19+ while self .data [prev_val ] and self .indicies_values [self .data [prev_val ][0 ]] != prev_val :
20+ heapq .heappop (self .data [prev_val ])
21+
22+ if not self .data [prev_val ] :
23+ self .data .pop (prev_val )
24+
25+ def find (self , number : int ) -> int :
26+ if number not in self .data :
27+ return - 1
28+ return self .data [number ][0 ]
29+
30+
31+ # Your NumberContainers object will be instantiated and called as such:
32+ # obj = NumberContainers()
33+ # obj.change(index,number)
34+ # param_2 = obj.find(number)
You can’t perform that action at this time.
0 commit comments