题目描述
给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组。
解法
拿到这道题,一般想法应该是先对数进行从小到大的排序,我首先想到的是能不能利用STL自带的排序函数,对vector进行排序。
由于vector没有排序函数,因此可以用STL算法中的sort函数。
class Solution {
public:
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
if( k == 0 || k > input.size())
{
vector<int> emp;
return emp;
}
sort(input.begin(), input.end());
vector<int> kNumbers(input.begin(), input.begin() + k);
return kNumbers;
}
};
时间复杂度O(nlogn)
空间复杂度O(1)
注:这个解法里有点要注意,返回空vector要先初始化一个空vector,不能在返回的同时初始化,如return vector<int> emp;
是错误的。