题解 | #最小的K个数#

最小的K个数

http://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf

一.题意整理

题目意思很简单就是给出一个组可能重复的数组,找到数组中不去重的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;
    }
};
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务