215. Kth Largest Element in an Array
# Medium

class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
int left = 0, right = nums.size()-1;
while(true) {
int pivot = partition(nums, left, right);
if(pivot == k-1) return nums[pivot];
if(pivot > k-1) right = pivot-1;
else left = pivot+1;
}
}
int partition(vector<int>& nums, int left, int right) {
int i = left-1, j = left, pivot = nums[right];
while(j < right) {
if(nums[j] >= pivot) {
i ++;
swap(nums[i], nums[j]);
}
j ++;
}
swap(nums[right], nums[++i]);
return i;
}
};
Last updated
Was this helpful?