zoukankan      html  css  js  c++  java
  • 最小的K个数

    最小的K个数

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

    代码实现

    package 剑指offer;

    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.PriorityQueue;

    /**
     * @author WangXiaoeZhe
     * @Date: Created in 2019/11/22 17:06
     * @description:
     */

    public class Main14 {
        public static void main(String[] args) {

        }

        public ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) {
            ArrayList<Integer> list = new ArrayList<>();
            int len = input.length;
            /**
             * 不符合条件返回为空
             */

            if (len < k || len < 1 || k == 0) {
                return list;
            }
            /**
             * 构建大顶堆
             */

            PriorityQueue<Integer> maxHeap = new PriorityQueue<>(k, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2 - o1;
                }
            });

            /**
             * 构建为K的大顶堆
             */

            for (int i = 0; i < len; i++) {
                if (maxHeap.size() != k) {
                    maxHeap.offer(input[i]);
                }else if (maxHeap.peek()>input[i]){
                    maxHeap.poll();
                    maxHeap.offer(input[i]);
                }
            }
            for (Integer integer : maxHeap) {
                list.add(integer);
            }
            return list;

        }

    }
  • 相关阅读:
    Spark学习笔记——安装和WordCount
    Scala学习笔记——入门
    Scala学习笔记——安装
    Maven常用命令(转)
    maven中snapshot快照库和release发布库的区别和作用 (转)
    Hadoop学习笔记——WordCount
    Hadoop学习笔记——安装Hadoop
    机器学习——利用SVD简化数据
    Python自然语言处理学习——jieba分词
    机器学习——大数据与MapReduce
  • 原文地址:https://www.cnblogs.com/wuhen8866/p/11913113.html
Copyright © 2011-2022 走看看