【剑指Offer】最小的K个数

题目链接

题目描述

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

思路:

【1】快速排序

【2】堆排序(优先队列实现最小堆)

ps:注意k>n的情况

代码【1】:

class Solution {
public:
    vector GetLeastNumbers_Solution(vector input, int k) {
        vectorres;
        if(k > input.size()){
            return res;
        }
        sort(input.begin(), input.end());
        for(int i=0;i

代码【2】:

class Solution {
public:
    vector GetLeastNumbers_Solution(vector input, int k) {
        priority_queuepq;
        vectorres;
        if(k > input.size() || k <= 0) {///这里注意判断k<=0,否则后面for死循环
            return res;
        }
        for(auto x: input) {
            if(pq.size()

 

你可能感兴趣的:(剑指Offer,剑指offer)