LintCode 题目:第k大元素

mac2025-04-04  9

URL:https://www.lintcode.com/problem/kth-largest-element/description

描述

在数组中找到第 k 大的元素。

样例

样例 1:

输入: n = 1, nums = [1,3,4,2] 输出: 4

样例 2:

输入: n = 3, nums = [9,3,2,4,8] 输出: 4

思路:

直接使用sort函数对数组元素进行排序,最后输出所求的k大的元素。

注意:

这里使用的是STL容器中的vector<int>,并不是平时定义的int nums[],使用vector的原因是,vector是一个可变数组,数组长度会随着元素的个数而变化,若不会使用vector的读者可以参考:vector常用解法及详解

其余的STL容器请参考:STL

若要是在LintCode的IDE中想要添加一个新的自定义函数,需要在函数前加上static,否则会报错:

static bool lcc(int a,int b){ return a>b; }

 

解答:

方法一(从小到大排序):

在代码段中添加:

sort(nums.begin(),nums.end()); int num = nums.size(); return nums[num-n];

即可:

方法二(从大到小排序):

自定义一个排序原则函数:

static bool lcc(int a,int b){ return a>b; }

在代码段中添加:

sort(nums.begin(),nums.end(),lcc); int num = nums.size(); return nums[n-1];

即可:

最新回复(0)