依旧快排依旧选择只是现在只需要确定频率前k不需要排到底classSolution{publicint[]topKFrequent(int[]nums,intk){MapInteger,IntegermapnewHashMap();Listint[]listnewArrayList();int[]resultnewint[k];for(inti0;inums.length;i){map.put(nums[i],map.getOrDefault(nums[i],0)1);}map.forEach((ks,v)-{list.add(newint[]{ks,v});});kp(list,0,list.size()-1,k);for(inti0;ik;i){result[i]list.get(i)[0];}returnresult;}publicvoidkp(Listint[]list,intstart,intend,intk){intindex(int)(Math.random()*(end-start1))start;Collections.swap(list,start,index);intnumlist.get(start)[1],lstart-1,rend1;while(rl){while(list.get(l)[1]num);while(list.get(--r)[1]num);if(lr)break;Collections.swap(list,l,r);}if(r-start1k)return;if(r-start1k)kp(list,start,r,k);elsekp(list,r1,end,k-rstart-1);}}