最小的k个数
使用java中的优先队列:
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> result = new ArrayList<>(); int length=input.length; if(k > length || k == 0){ return result; } PriorityQueue<Integer> priority = new PriorityQueue<>(k, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2.compareTo(o1); } }); for(int i=0;i<length;i++) { if(priority.size()!=k) { priority.offer(input[i]); } else if(priority.peek()>input[i]) { int temp=priority.poll(); if(input[i]<temp) { priority.offer(input[i]); } } } for(Integer i:priority) { result.add(i); } return result; }
本文来自博客园,作者:LeeJuly,转载请注明原文链接:https://www.cnblogs.com/peterleee/p/11215752.html

浙公网安备 33010602011771号