剑指offer——42最小的K个数
题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
题解:
原以为书中会有好方法,想不到还是排序和STL这两种方法。
原以为书中会有好方法,想不到还是排序和STL这两种方法。
1 class Solution { 2 public: 3 vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { 4 if (input.size() < k)return {}; 5 set<int>res; 6 for (auto a : input) 7 { 8 if (res.size() < k) 9 res.insert(a); 10 else if(a<*(--res.end())) 11 { 12 res.erase(--res.end()); 13 res.insert(a); 14 } 15 } 16 vector<int>v; 17 v.assign(res.begin(), res.end()); 18 return v; 19 } 20 };