class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param input int整型vector
     * @param k int整型
     * @return int整型vector
     */
    vector<int> GetLeastNumbers_Solution(vector<int>& input, int k) {
        // write code here
        if (k == 0) return {}; // 如果 k 为 0,直接返回空数组

        // 使用最大堆来存储最小的 k 个数
        priority_queue<int, vector<int>, less<>> maxHeap;
        for (int num : input) {
            if (maxHeap.size() < k) {
                maxHeap.push(num);
            } else if (num < maxHeap.top()) {
                maxHeap.pop();
                maxHeap.push(num);
            }
        }

        // 从堆中取出所有元素构成结果数组
        vector<int> result;
        while (!maxHeap.empty()) {
            result.push_back(maxHeap.top());
            maxHeap.pop();
        }
        return result;
    }
};