最小的K个数

xiaoxiao2021-02-28  130

输入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;     } };
转载请注明原文地址: https://www.6miu.com/read-46100.html

最新回复(0)