码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode-Interview40-最小的k个数

时间:2020-03-20 23:53:37      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:算法   pre   描述   tco   interview   sort   number   length   题目   

题目描述

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

我的题解

暴力排序

把数组升序排好,取出最前的k个即可,很暴力,比较低效, 仅适合与k接近与数组长度。

    //java 8ms
    public int[] getLeastNumbers(int[] arr, int k) {
        Arrays.sort(arr);
        int [] res = new int[k];
        for (int i=0;i<k;i++){
            res[i]=arr[i];
        }
        return res;
    }

有限排序

想法是只找出k个最小数,不要对其他的数进行排序

    //效率还是不行,比上面全排序还差,这个排序算法需要改进!
    public int[] getLeastNumbers(int[] arr, int k) {
        int len = arr.length;
        int [] res = new int[k];
        for (int i=0;i<k;i++){
            int min = arr[i];
            int minIndex=i;
            for (int j=i+1;j<len;j++){
                if (arr[j]<min){
                    min = arr[j];
                    minIndex=j;
                }
            }
            if (minIndex!=i) arr[minIndex]=arr[i];
            res[i]=min;
        }

        return res;
    }

LeetCode-Interview40-最小的k个数

标签:算法   pre   描述   tco   interview   sort   number   length   题目   

原文地址:https://www.cnblogs.com/XT-xutao/p/12535659.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!