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