LeetCode(剑指 Offer)- 40. 最小的 k 个数

Posted 放羊的牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(剑指 Offer)- 40. 最小的 k 个数相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

题目大意:

解题思路:

相关企业

  • 字节跳动

AC 代码

  • Java
class Solution 
    
    public int[] getLeastNumbers(int[] arr, int k) 

        int min = arr[0], max = arr[0];
        for (int i = 1; i < arr.length; i++) 
            int val = arr[i];
            if (val < min) min = val;
            if (val > max) max = val;
        

        int size = max - min + 1;
        int[] tmp = new int[size];
        for (int i = 0; i < arr.length; i++) 
            tmp[arr[i] - min]++;
        

        arr = new int[k];
        for (int i = 0, j = 0; i < tmp.length; i++) 
            while (tmp[i] > 0 && j < k) 
                arr[j++] = i + min;
                tmp[i]--;
            
            if (j >= k) 
                break;
            
        
        
        return arr;
    
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于LeetCode(剑指 Offer)- 40. 最小的 k 个数的主要内容,如果未能解决你的问题,请参考以下文章

「LeetCode」剑指 Offer 40. 最小的k个数

LeetCode(剑指 Offer)- 40. 最小的 k 个数

剑指 Offer 40. 最小的k个数

LeetCode12. 整数转罗马数字 / 剑指 Offer 40. 最小的k个数 / 剑指 Offer 41. 数据流中的中位数

[剑指 Offer 40]. 最小的 k 个数

[剑指 Offer 40]. 最小的 k 个数