THE
problem
solution
Code
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;
vector<int>::iterator it = input.begin();
for(; it!= input.end(); it++){
if(leastNums.size()<k){
leastNums.insert(*it);
}
else{
multiset<int, greater<int>>::iterator heapIt = leastNums.begin();
if(*it < *leastNums.begin()){
leastNums.erase(*heapIt);
leastNums.insert(*it);
}
}
}
vector<int> myvector(leastNums.begin(), leastNums.end());
std::reverse(myvector.begin(),myvector.end());
return myvector;
}
};
Summary and reflection
- Examined the usage of some heap advanced data structures.