您的位置:首页 > 其它

LeetCode 215:Kth Largest Element in an Array

2015-05-27 00:11 375 查看
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.

For example,

Given
[3,2,1,5,6,4]
and k = 2, return 5.

Note:

You may assume k is always valid, 1 ≤ k ≤ array's length.

Credits:

Special thanks to @mithmatt for adding this problem and creating all test cases.

代码如下:

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        int length = nums.size();
        if (length == 1) {
            return nums[0];
        }
        vector<int> left;
        vector<int> right;
        
        for (int index=1; index<length; index++) {
            if (nums[index] > nums[0]) {
                right.push_back(nums[index]);
            }else{
                left.push_back(nums[index]);
            }
        }
        length = right.size();
        if (length >=k) {
            return findKthLargest(right, k);
        }else if(length == k-1){
            return nums[0];
        }else{
            return findKthLargest(left, k-length-1);
        }
    }
};


LeetCode对时间要求不高,下面这样的代码也能通过:

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        sort(nums.begin(), nums.end());
        reverse(nums.begin(), nums.end());
        return nums[k-1];
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: