classTopVotedCandidate:def__init__(self,persons:List[int],times:List[int]):cnt=Counter()self.times=timesself.wins=[]cur=0forpinpersons:cnt[p]+=1ifcnt[cur]<=cnt[p]:cur=pself.wins.append(cur)defq(self,t:int)->int:i=bisect_right(self.times,t)-1returnself.wins[i]# Your TopVotedCandidate object will be instantiated and called as such:# obj = TopVotedCandidate(persons, times)# param_1 = obj.q(t)
classTopVotedCandidate{privateint[]times;privateint[]wins;publicTopVotedCandidate(int[]persons,int[]times){intn=persons.length;wins=newint[n];this.times=times;int[]cnt=newint[n];intcur=0;for(inti=0;i<n;++i){intp=persons[i];++cnt[p];if(cnt[cur]<=cnt[p]){cur=p;}wins[i]=cur;}}publicintq(intt){inti=Arrays.binarySearch(times,t+1);i=i<0?-i-2:i-1;returnwins[i];}}/** * Your TopVotedCandidate object will be instantiated and called as such: * TopVotedCandidate obj = new TopVotedCandidate(persons, times); * int param_1 = obj.q(t); */
classTopVotedCandidate{public:TopVotedCandidate(vector<int>&persons,vector<int>×){intn=persons.size();this->times=times;wins.resize(n);vector<int>cnt(n);intcur=0;for(inti=0;i<n;++i){intp=persons[i];++cnt[p];if(cnt[cur]<=cnt[p]){cur=p;}wins[i]=cur;}}intq(intt){inti=upper_bound(times.begin(),times.end(),t)-times.begin()-1;returnwins[i];}private:vector<int>times;vector<int>wins;};/** * Your TopVotedCandidate object will be instantiated and called as such: * TopVotedCandidate* obj = new TopVotedCandidate(persons, times); * int param_1 = obj->q(t); */
typeTopVotedCandidatestruct{times[]intwins[]int}funcConstructor(persons[]int,times[]int)TopVotedCandidate{n:=len(persons)wins:=make([]int,n)cnt:=make([]int,n)cur:=0fori,p:=rangepersons{cnt[p]++ifcnt[cur]<=cnt[p]{cur=p}wins[i]=cur}returnTopVotedCandidate{times,wins}}func(this*TopVotedCandidate)Q(tint)int{i:=sort.SearchInts(this.times,t+1)-1returnthis.wins[i]}/** * Your TopVotedCandidate object will be instantiated and called as such: * obj := Constructor(persons, times); * param_1 := obj.Q(t); */
classTopVotedCandidate{privatetimes:number[];privatewins:number[];constructor(persons:number[],times:number[]){constn=persons.length;this.times=times;this.wins=newArray<number>(n).fill(0);constcnt:Array<number>=newArray<number>(n).fill(0);letcur=0;for(leti=0;i<n;++i){constp=persons[i];cnt[p]++;if(cnt[cur]<=cnt[p]){cur=p;}this.wins[i]=cur;}}q(t:number):number{constsearch=(t:number):number=>{letl=0,r=this.times.length;while(l<r){constmid=(l+r)>>1;if(this.times[mid]>t){r=mid;}else{l=mid+1;}}returnl;};consti=search(t)-1;returnthis.wins[i];}}/** * Your TopVotedCandidate object will be instantiated and called as such: * var obj = new TopVotedCandidate(persons, times) * var param_1 = obj.q(t) */