使用最小堆解决topK问题(Java描述)

一道常考的题,给定一个无序数组,求其中最大的k个数,腾讯一面面试题。

import java.util.Arrays;
import java.util.PriorityQueue;

class topKdemo{
    public static void main(String[] args) {
        int[]arr={5,1,2,3,4,5,5,6,7,8,9};
        int []res=findTopk(arr, 4);
        //输出[6, 7, 8, 9]
        System.out.println(Arrays.toString(res));
    }

    public static int[] findTopk(int[]arr,int k){
        //调用java封装的最小堆函数
        PriorityQueueminQueue=new PriorityQueue<>(k);
        //先放入前k个数构成最小堆
        for (int num : arr) {
            if(minQueue.size()

你可能感兴趣的:(Java,数据结构)