输入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)
{
vector<int> ans;
int n = input.size();
if(n == 0 || k < 1 || k > n)
return ans;
multiset<int, greater<int>> m;
multiset<int, greater<int>>::iterator it;
for(int i=0; i<n; ++i)
{
if(m.size() < k)
m.insert(input[i]);
else
{
it = m.begin();
if(*it > input[i])
{
m.erase(*it);
m.insert(input[i]);
}
}
}
for(it=m.begin(); it!=m.end(); ++it)
ans.push_back(*it);
return ans;
}
};