剑指offer系列——29.最小的K个数

Q:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
T:
注意空的情况和k过大的情况。
1.直接排序输入。

    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
        vector<int> result;
        if (input.empty())
            return result;
        sort(input.begin(), input.end(), [](const int &a, const int &b) { return a < b; });
        if (k > input.size())
            return result;
        for (int i = 0; i < k; i++)
            result.push_back(input[i]);
        return result;
    }

2.其他排序方法看:https://www.cnblogs.com/xym4869/p/8666860.html
3.全部放入PriorityQueue(默认小根堆),然后pop k次。

posted @ 2020-02-13 17:19  Shaw_喆宇  阅读(88)  评论(0编辑  收藏  举报