一.题意整理
题目意思很简单就是给出一个组可能重复的数组,找到数组中不去重的K个最小数,然后返回。
二.思路整合
要找到数组中不去重的第k个最小数,首先我们想到的就是先排序,然后返回排序后的k个最小数。我们可以利用c++中的sort函数来实现对数组的排序,下面是对sort函数的一些介绍:
sort函数的介绍:sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,
也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高
对于vector使用sort排序:
sort(vec.begin(),vec.end()); //可以实现对vector从小到大的排序
sort(vec.begin(),vec.end(),greater<int>()); //可以实现对vector从大到小的排序
对于vector<node>使用sort排序:
struct node {
int id;
string name;
}
sort(vec.begin(),vec.end(),cmp);
bool cmp(node a,node b){
return a.id<b.id //对id进行排序,id小的再前面
}
三.代码实现
class Solution {
public:
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
sort(input.begin(),input.end());
//unique(a.begin(),a.end());
vector<int> ans;
for(int i=0;i<k;i++){
ans.push_back(input[i]);
}
return ans;
}
};