zoukankan      html  css  js  c++  java
  • LeetCode 面试题40. 最小的k个数

    面试题40. 最小的k个数

    链接

    https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/

    题目

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

    示例 1:

    输入:arr = [3,2,1], k = 2
    输出:[1,2] 或者 [2,1]
    示例 2:

    输入:arr = [0,1,2,1], k = 1
    输出:[0]

    限制:

    0 <= k <= arr.length <= 10000
    0 <= arr[i] <= 10000

    思路

    直接拿堆排序或者调用快排都行,将所有数字放到小项堆中,然后取k次堆顶值,就是最小的k个,或者直接sort函数一下。

    代码

      public int[] getLeastNumbers(int[] arr, int k) {
        PriorityQueue<Integer> heap =
            new PriorityQueue<Integer>((n1, n2) -> n1 - n2);
        for (int n : arr) {
          heap.add(n);
        }
        int[] ans = new int[k];
        for (int i = 0; i < k; i++) {
          ans[i] = heap.poll();
        }
        return ans;
      }
    
  • 相关阅读:
    MongoDB小结25
    MongoDB小结24
    MongoDB小结23
    MongoDB小结22
    MongoDB小结21
    MongoDB小结20
    MongoDB小结19
    MongoDB小结18
    hdu 4606 Occupy Cities
    hdu 4610 Cards
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12533475.html
Copyright © 2011-2022 走看看