LintCode 题目:第k大元素

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 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];

即可:

LintCode 题目:第k大元素_第1张图片

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

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

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

在代码段中添加:

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

即可:

LintCode 题目:第k大元素_第2张图片

你可能感兴趣的:(LintCode,#,中等)