输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,
思路:堆。
class Solution {
public: // typedef multiset<int, greater<int> > intset; //typedef multiset<int, greater<int >>::iterator it; vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { //声明 vector<int> res; if(input.size()==0||input.size()<k||k<=0) return res; multiset<int, greater<int> > intset; // multiset<int, greater<int >>::iterator ; vector<int>::iterator it=input.begin(); for(;it!=input.end();it++) { if(intset.size()<k) { intset.insert(*it); } else { multiset<int, greater<int> >::iterator iter=intset.begin(); if(*iter>*it) { intset.erase(iter); intset.insert(*it); } } } multiset<int, greater<int> >::iterator iter1=intset.begin(); for(;iter1!=intset.end();iter1++) res.push_back(*iter1); return res; } };