[leetcode-215-Kth Largest Element in an Array]

Posted hellowOOOrld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode-215-Kth Largest Element in an Array]相关的知识,希望对你有一定的参考价值。

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.

 

思路:

利用快排划分的思想来找。注意从小到大排序以后,第k大的是num[n-k]。

int partion (vector<int>& nums,int begin,int end)
    {
        int pivot = nums[begin];
        while(begin<end)
        {
            while(nums[end]>=pivot && begin<end)end--;
            nums[begin] = nums[end];            
            while(nums[begin]<=pivot && begin<end)begin++;
            nums[end] = nums[begin];
        }
        nums[begin] = pivot;
        return begin;
    }
    int findKthLargest(vector<int>& nums, int k)
    {
        int begin =0,end = nums.size()-1,n =nums.size();
        while(begin<end)
        {
            int j = partion(nums,begin,end);
            if(j==n-k)break;
            else if(j<n-k)begin = j+1;
            else end = j-1;            
        }
        return nums[n-k];
    }

 




以上是关于[leetcode-215-Kth Largest Element in an Array]的主要内容,如果未能解决你的问题,请参考以下文章

LN : leetcode 215 Kth Largest Element in an Array

[LeetCode] 215. Kth Largest Element in an Array

leetcode 215. Kth Largest Element in an Array

[leetcode-215-Kth Largest Element in an Array]

Leetcode 215: Kth Largest Element in an Array

LeetCode215. Kth Largest Element in an Array