29、最小的k个数

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

import java.util.*;
public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList<Integer> list = new ArrayList<>();
        if(k>input.length){
            return list;
        }
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        //构造小顶堆,O(n)
        for(int i=0; i<input.length; i++){
            pq.offer(input[i]);
        }
        //取最小的k个
        for(int i=0; i<k; i++){
            list.add(pq.poll());
        }
        return list;
    }
}

2017.6.2 第二次做,用了排序,时间复杂度O(n^2)比用小顶堆要差

import java.util.*;

public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList<Integer> list = new ArrayList<>();
        if(input.length < k){
            return list;
        }
        Arrays.sort(input);
        for(int i=0; i<k; i++){
            list.add(input[i]);
        }
        return list;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最小的K个数 题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最...
    echoVic阅读 821评论 1 2
  • 题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1...
    juexin阅读 227评论 0 0
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,286评论 0 2
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,223评论 0 52
  • 很久没有一个人静静地坐在宿舍,吃着小舍友帮忙买的饭,一双筷子,一盒饭,没有拿手机刷微博,也没有追剧聊天,单纯吃饭。...
    女侠丢了把剑阅读 403评论 0 0