leetcode-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.this

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

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

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

Subscribe to see which companies asked this questionci

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
       return findKth(num, nums.begin(), nums.end(), k-1);
    }
    int findKth(vector<int> num, int begin, int end, int k);
};

int Solution::findKth(vector<int> num, int begin, int end, int k)
{
    int first = num[begin], i=begin, j=end;
    while(i<j)
    {   
        while(i<j&&num[i]<first)
        {
            i++;
        }
        while(i<j&num[j]>first)
        {
            j--;    
        }
        swap(num[i], num[j]);
    }
    if(i==k)
    {
        return num[i];
    }
    else if(i<k)
    {
        findKth(num, begin, i-1);
    }
    else
    {
        findKth(num, i+1, end);
    }
}
相關文章
相關標籤/搜索