# leetcode_c++:Divide and Conquer：Kth Largest Element in an Array（215）

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.

class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
sort(nums.begin(), nums.end());
return nums[nums.size() - k - 1];
}
};
class Solution {
private:
int partition(vector<int>& nums, int left, int right) {
int pivot = nums[left];
int l = left + 1, r = right;
while (l <= r) {
if (nums[l] < pivot && nums[r] > pivot){
swap(nums[l++], nums[r--]);
}
if (nums[l] >= pivot) l++;
if (nums[r] <= pivot) r--;
}
swap(nums[left], nums[r]);
return r;
}

public:
int findKthLargest_qsort(vector<int>& nums, int k) {
int left = 0, right = nums.size() - 1;
while (true) {
int pos = partition(nums, left, right);
if (pos == k - 1){
return nums[pos];
}
if (pos > k - 1) {
right = pos - 1;
}else{
left = pos + 1;
}
}
}

};

• 本文已收录于以下专栏：

举报原因： 您举报文章：leetcode_c++:Divide and Conquer：Kth Largest Element in an Array（215） 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)