输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
class Solution {
public:
typedef multiset<int,greater<int>> inSet;
typedef multiset<int,greater<int>>::iterator setIterator;
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
vector<int> res;
if(input.size()<k || k<1)
return res;
inSet intSet;
vector<int>::iterator iter=input.begin();
for(;iter!=input.end();iter++){
if(intSet.size()<k)
intSet.insert(*iter);
else{
setIterator iterGreat=intSet.begin();
if(*iter<*iterGreat){
intSet.erase(iterGreat);
intSet.insert(*iter);
}
}
}
for(auto v:intSet){
res.insert(res.begin(),v);
}
return res;
}
};