学设计的视频网站,公明网站建设,建筑资质人才网官网,设计网页通常使用什么语言目录
题目#xff1a;
示例#xff1a;
分析#xff1a;
代码#xff1a; 题目#xff1a; 示例#xff1a; 分析#xff1a;
题目很简单#xff0c;就是给我们一个数组#xff0c;让我们返回第K大的元素。
那么很直观的一个做法就是我们直接对数组进行降序排序…目录
题目
示例
分析
代码 题目 示例 分析
题目很简单就是给我们一个数组让我们返回第K大的元素。
那么很直观的一个做法就是我们直接对数组进行降序排序索引为k-1的元素就是整个数组里第k大的元素了。
另外一个就是使用大顶堆C里有内置是叫priority_queue优先队列我们只需要往优先队列里塞进元素那么这个容器底层会自动对元素进行排序我们从大顶堆里取的数永远是队列里最大的数那么我们只需要取数再将大顶堆的堆顶元素移出如此反复k-1次那么最后取出的数就是数组里第K大的元素了。
至于大顶堆该怎么实现我的看法是我们普通人只需要会使用内置的容器就可以了真的要自己手写一个大顶堆的话还是挺麻烦的。
代码
class Solution {
public:int findKthLargest(vectorint nums, int k) {//使用C内置优先队列 大顶堆priority_queueintpq(nums.begin(),nums.end());for(int i0;ik-1;i){pq.pop();}return pq.top();//从大到小排序后返回第K大的元素sort(nums.begin(),nums.end(),[](int a,int b){return ab;});return nums[k-1];}
};