fromsortedcontainersimportSortedSetclassNumberContainers:def__init__(self):self.mp={}self.t=defaultdict(SortedSet)defchange(self,index:int,number:int)->None:ifindexinself.mp:v=self.mp[index]self.t[v].remove(index)self.mp[index]=numberself.t[number].add(index)deffind(self,number:int)->int:s=self.t[number]returns[0]ifselse-1# Your NumberContainers object will be instantiated and called as such:# obj = NumberContainers()# obj.change(index,number)# param_2 = obj.find(number)
classNumberContainers{privateMap<Integer,Integer>mp=newHashMap<>();privateMap<Integer,TreeSet<Integer>>t=newHashMap<>();publicNumberContainers(){}publicvoidchange(intindex,intnumber){if(mp.containsKey(index)){intv=mp.get(index);t.get(v).remove(index);if(t.get(v).isEmpty()){t.remove(v);}}mp.put(index,number);t.computeIfAbsent(number,k->newTreeSet<>()).add(index);}publicintfind(intnumber){returnt.containsKey(number)?t.get(number).first():-1;}}/** * Your NumberContainers object will be instantiated and called as such: * NumberContainers obj = new NumberContainers(); * obj.change(index,number); * int param_2 = obj.find(number); */
classNumberContainers{public:map<int,int>mp;map<int,set<int>>t;NumberContainers(){}voidchange(intindex,intnumber){autoit=mp.find(index);if(it!=mp.end()){t[it->second].erase(index);it->second=number;}elsemp[index]=number;t[number].insert(index);}intfind(intnumber){autoit=t.find(number);returnit==t.end()||it->second.empty()?-1:*it->second.begin();}};/** * Your NumberContainers object will be instantiated and called as such: * NumberContainers* obj = new NumberContainers(); * obj->change(index,number); * int param_2 = obj->find(number); */
typeNumberContainersstruct{mpmap[int]inttmap[int]*redblacktree.Tree}funcConstructor()NumberContainers{returnNumberContainers{map[int]int{},map[int]*redblacktree.Tree{}}}func(this*NumberContainers)Change(indexint,numberint){ifnum,ok:=this.mp[index];ok{this.t[num].Remove(index)}this.mp[index]=numberifthis.t[number]==nil{this.t[number]=redblacktree.NewWithIntComparator()}this.t[number].Put(index,nil)}func(this*NumberContainers)Find(numberint)int{s,ok:=this.t[number]if!ok||s.Size()==0{return-1}returns.Left().Key.(int)}/** * Your NumberContainers object will be instantiated and called as such: * obj := Constructor(); * obj.Change(index,number); * param_2 := obj.Find(number); */