最小的K个数(PriorityQueue的使用)

题目描述

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

思路

最简单的就是数组排序从小到大排序输出前K个数即可。本题使用Java中的PriorityQueue实现。

import java.util.PriorityQueue;
import java.util.Comparator;
import java.util.ArrayList;
public class Solution {
    public ArrayList GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList list = new ArrayList();
        int len = input.length;
        if(k > len||k == 0){
            return list;
        }
        PriorityQueue maxHeap = new PriorityQueue(k,new Comparator(){
            @Override
            public int compare(Integer o1,Integer o2){
                return o2.compareTo(o1);
            }
        });
        for(int i=0;iinput[i]){
                    maxHeap.poll();
                    maxHeap.add(input[i]);
                }
            }
        }
        for(Integer i:maxHeap){
            list.add(i);
        }
        return list;
    }
}

自己写的low的都不好意思粘的代码:

import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
    public ArrayList GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList list = new ArrayList();
        int len = input.length;
        if(k>len||k<0){
            return list;
        }
        Arrays.sort(input);
        for(int i=0;i

【参考】

Java中的PriorityQueue的使用方法

https://blog.csdn.net/m0_38103546/article/details/79676669

深入理解PriorityQueue(实现方法)

https://www.cnblogs.com/CarpenterLee/p/5488070.html

T:20190324

你可能感兴趣的:(死磕算法)