题解 | #寻找第K大#

寻找第K大

http://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf

一.题意整理

题目意思很简单就是给出一个组可能重复的数组,找到数组中不去重的第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:
    int findKth(vector<int> a, int n, int K) {
        sort(a.begin(),a.end(),greater<int>());
        //unique(a.begin(),a.end()); 这块需要注意一下 这个不需要去重的
        return a[K-1];
    }
};
全部评论

相关推荐

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