美文网首页
取k个最小数

取k个最小数

作者: 王剑_a9e1 | 来源:发表于2018-12-12 02:10 被阅读0次

PriorityQueue实现大顶堆


private static final int DEFAULT_INITIAL_CAPACITY = 11;
PriorityQueue<Integer> maxHeap=new PriorityQueue<Integer>(DEFAULT_INITIAL_CAPACITY, new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {                
            return o2-o1;
        }
    });


例子:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,可以使用大顶堆保存,比堆中的数小就进堆。


import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.Comparator;
public class Solution {
   public ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) {
       ArrayList<Integer> result = new ArrayList<Integer>();
       int length = input.length;
       if(k > length || k == 0){
           return result;
       }
        PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>(k, new Comparator<Integer>() {
 
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2.compareTo(o1);
            }
        });
        for (int i = 0; i < length; i++) {
            if (maxHeap.size() != k) {
                maxHeap.offer(input[i]);
            } else if (maxHeap.peek() > input[i]) {
                Integer temp = maxHeap.poll();
                temp = null;
                maxHeap.offer(input[i]);
            }
        }
        for (Integer integer : maxHeap) {
            result.add(integer);
        }
        return result;
    }
}


相关文章

  • 算法(十进制与K进制的转换)

    十进制整数到K进制整数 除K取余法。 十进制小数到K进制小数 乘K取整法。

  • 取k个最小数

    PriorityQueue实现大顶堆 例子:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3...

  • 取整

    舍掉小数取整:Math.floor(2)=2 舍掉小数取整:Math.floor(2.1)=2 舍掉小数取整:Ma...

  • C语言小数取整

    舍掉小数取整:Math.floor(2)=2 舍掉小数取整:Math.floor(2.1)=2 舍掉小数取整:Ma...

  • iOS小数取整(四舍五入-向上-向下取值)

    小数向上取整,指小数部分直接进1: x = 2.222,ceilf(x) = 3。 小数向下取整,指直接去掉小数部...

  • 取整

    小数向上取整,指小数部分直接进1 x=3.14,ceilf(x)=4小数向下取整,指直接去掉...

  • 取整

    向上取整 x=3.14,ceilf(x)=4 小数向下取整,指直接去掉小数部分 x=3.14,...

  • Flutter小数取整&小数点后保留n位

    舍弃小数部分(取整) 保留小数点后 n 位

  • 2016.11.24 JS

    parseInt(i/j):去掉小数取整 this this:window对象,可以看成在js的最顶端,所有东西都...

  • Python 字符操作

    python 两数相除取小数和百分数 取小数 和 百分数

网友评论

      本文标题:取k个最小数

      本文链接:https://www.haomeiwen.com/subject/xnoyhqtx.html