classSolution { public: intfindKthLargest(vector<int> &nums, int k){ int n = nums.size(); returnquickSelect(nums, 0, n - 1, n - k); } intquickSelect(vector<int> &nums, int l, int r, int k){ if (l >= r) return nums[k]; swap(nums[l], nums[l + rand() % (r - l + 1)]);
int p = nums[l]; int i = l; int j = r; while (i < j) {
while (i < j && nums[j] >= p) j--;
while (i < j && nums[i] <= p) i++; swap(nums[i], nums[j]); } swap(nums[i], nums[l]); if (i == k) return nums[i]; if (i > k) { returnquickSelect(nums, l, i - 1, k); } returnquickSelect(nums, i + 1, r, k); } };