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); } }