题目描述

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

解题思路

  • 定义如果给出的数组不空,则一个函数对该数组元素从小到大排序,返回一个新的数组。
  • 如果返回的数组不空,且给出的参数k符合条件,则定义一个函数,返回一个装有该数组前k个元素的数组。

代码实现

class Solution {
public:
vector<int> VectorSort(const vector<int> &input) // 对数组进行排序
{
if(input.empty())
return {};
vector<int> vInputTemp(input);
sort(vInputTemp.begin(), vInputTemp.end());
return vInputTemp;
}

vector<int> GetLeastNumbersK(const vector<int> &vInputTemp, const int &k) // 取数组中前k小的元素
{
if(vInputTemp.empty())
return {};
if(k <= 0 || k > vInputTemp.size())
return {};
vector<int> vLeastKNumber;
vLeastKNumber.assign(vInputTemp.begin(), vInputTemp.begin() + k);
return vLeastKNumber;
}

vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
if(input.empty())
return {};
vector<int> vInputTemp;
vInputTemp = VectorSort(input);
if(vInputTemp.empty())
return {};
vector<int> vLeastKNumber;
vLeastKNumber = GetLeastNumbersK(vInputTemp, k);
return vLeastKNumber;
}
};