Kth Largest Element in an Array
https://leetcode.com/problems/kth-largest-element-in-an-array/description/
Thoughts
Code
/*
* @lc app=leetcode id=215 lang=cpp
*
* [215] Kth Largest Element in an Array
*/
// @lc code=start
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
const auto partition = [&](int l, int r) {
swap(nums[l], nums[rand() % (r - l + 1) + l]);
const auto s = l, t = nums[l++];
while (l <= r) {
if (nums[l] > t) ++l;
else if (nums[r] <= t) --r;
else {
swap(nums[l++], nums[r--]);
}
}
swap(nums[s], nums[r]);
return r;
};
int start = 0, end = nums.size() - 1;
--k;
while (true) {
int pos = partition(start, end);
if (pos == k) return nums[pos];
else if (pos < k) start = pos + 1;
else end = pos - 1;
}
return nums[0];
}
};
// @lc code=end
Analysis
Ver.2
Last updated