最小的k个数(剑指offer)

    xiaoxiao2022-07-07  162

    题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 思路 1.优先队列

    import java.util.*; public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> list=new ArrayList<Integer>(); if(input==null||input.length<k||k==0) return list; Queue<Integer> q=new PriorityQueue<>(k,new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { return o1 > o2 ? -1 : 1; } }); int len=input.length; for(int i=0;i<len;i++){ if(q.size()<k){ q.add(input[i]); } else{ if(input[i]<q.peek()){ q.poll(); q.add(input[i]); } } } while(!q.isEmpty()){ list.add(q.poll()); } return list; } }

    2.小根堆

    参考

    https://blog.csdn.net/j_dark/article/details/72859753

    最新回复(0)