最小的k個數

題目描述

輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。
class Solution {
public:
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
        int len = input.size();
        if(len <= 0 || k <= 0 || k > len) return vector<int>();
        //利用仿函數排序
        multiset<int, greater<int>> leastNums;
        vector<int>::iterator vec_it = input.begin();
        for(;vec_it != input.end(); vec_it++) {
            if(leastNums.size() < k) {
                leastNums.insert(*vec_it);
            } else {
                //使第一個元素爲最大值
                multiset<int, greater<int>>::iterator greatest_it = leastNums.begin();
                
                if (*vec_it < *(leastNums.begin())) {
                    leastNums.erase(greatest_it);
                    leastNums.insert(*vec_it);
                }
            }
        }
        return vector<int>(leastNums.begin(), leastNums.end());
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章