classKthLargest:def__init__(self,k:int,nums:List[int]):self.q=[]self.size=kfornuminnums:self.add(num)defadd(self,val:int)->int:heappush(self.q,val)iflen(self.q)>self.size:heappop(self.q)returnself.q[0]# Your KthLargest object will be instantiated and called as such:# obj = KthLargest(k, nums)# param_1 = obj.add(val)
classKthLargest{privatePriorityQueue<Integer>q;privateintsize;publicKthLargest(intk,int[]nums){q=newPriorityQueue<>(k);size=k;for(intnum:nums){add(num);}}publicintadd(intval){q.offer(val);if(q.size()>size){q.poll();}returnq.peek();}}/** * Your KthLargest object will be instantiated and called as such: * KthLargest obj = new KthLargest(k, nums); * int param_1 = obj.add(val); */
1 2 3 4 5 6 7 8 910111213141516171819202122
classKthLargest{public:priority_queue<int,vector<int>,greater<int>>q;intsize;KthLargest(intk,vector<int>&nums){size=k;for(intnum:nums)add(num);}intadd(intval){q.push(val);if(q.size()>size)q.pop();returnq.top();}};/** * Your KthLargest object will be instantiated and called as such: * KthLargest* obj = new KthLargest(k, nums); * int param_1 = obj->add(val); */
typeKthLargeststruct{h*IntHeapkint}funcConstructor(kint,nums[]int)KthLargest{h:=&IntHeap{}heap.Init(h)for_,v:=rangenums{heap.Push(h,v)}forh.Len()>k{heap.Pop(h)}returnKthLargest{h:h,k:k,}}func(this*KthLargest)Add(valint)int{heap.Push(this.h,val)forthis.h.Len()>this.k{heap.Pop(this.h)}returnthis.h.Top()}funcconnectSticks(sticks[]int)int{h:=IntHeap(sticks)heap.Init(&h)res:=0forh.Len()>1{val:=heap.Pop(&h).(int)val+=heap.Pop(&h).(int)res+=valheap.Push(&h,val)}returnres}typeIntHeap[]intfunc(hIntHeap)Len()int{returnlen(h)}func(hIntHeap)Less(i,jint)bool{returnh[i]<h[j]}func(hIntHeap)Swap(i,jint){h[i],h[j]=h[j],h[i]}func(h*IntHeap)Push(xany){*h=append(*h,x.(int))}func(h*IntHeap)Pop()any{old:=*hn:=len(old)x:=old[n-1]*h=old[0:n-1]returnx}func(h*IntHeap)Top()int{if(*h).Len()==0{return0}return(*h)[0]}/** * Your KthLargest object will be instantiated and called as such: * obj := Constructor(k, nums); * param_1 := obj.Add(val); */
/** * @param {number} k * @param {number[]} nums */varKthLargest=function(k,nums){this.k=k;this.heap=newMinHeap();for(letnumofnums){this.add(num);}};/** * @param {number} val * @return {number} */KthLargest.prototype.add=function(val){this.heap.offer(val);if(this.heap.size()>this.k){this.heap.poll();}returnthis.heap.peek();};classMinHeap{constructor(data=[]){this.data=data;this.comparator=(a,b)=>a-b;this.heapify();}heapify(){if(this.size()<2)return;for(leti=1;i<this.size();i++){this.bubbleUp(i);}}peek(){if(this.size()===0)returnnull;returnthis.data[0];}offer(value){this.data.push(value);this.bubbleUp(this.size()-1);}poll(){if(this.size()===0){returnnull;}constresult=this.data[0];constlast=this.data.pop();if(this.size()!==0){this.data[0]=last;this.bubbleDown(0);}returnresult;}bubbleUp(index){while(index>0){constparentIndex=(index-1)>>1;if(this.comparator(this.data[index],this.data[parentIndex])<0){this.swap(index,parentIndex);index=parentIndex;}else{break;}}}bubbleDown(index){constlastIndex=this.size()-1;while(true){constleftIndex=index*2+1;constrightIndex=index*2+2;letfindIndex=index;if(leftIndex<=lastIndex&&this.comparator(this.data[leftIndex],this.data[findIndex])<0){findIndex=leftIndex;}if(rightIndex<=lastIndex&&this.comparator(this.data[rightIndex],this.data[findIndex])<0){findIndex=rightIndex;}if(index!==findIndex){this.swap(index,findIndex);index=findIndex;}else{break;}}}swap(index1,index2){[this.data[index1],this.data[index2]]=[this.data[index2],this.data[index1]];}size(){returnthis.data.length;}}/** * Your KthLargest object will be instantiated and called as such: * var obj = new KthLargest(k, nums) * var param_1 = obj.add(val) */