题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
AC C++ Solution:
class Solution {
public:
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
int len = input.size();
if(len <= 0 || k > len)
return vector<int>();
multiset<int, greater<int>> leastNums;
auto vec_it = input.begin();
for(;vec_it != input.end(); ++vec_it) {
if(leastNums.size() < k)
leastNums.insert(*vec_it);
else {
auto max_it = leastNums.begin();
if(*vec_it < *max_it) {
leastNums.erase(*max_it);
leastNums.insert(*vec_it);
}
}
}
return vector<int>(leastNums.begin(), leastNums.end());
}
};