每日一题215. 数组中的第K个最大元素给定整数数组 `nums` 和整数 `k`,请返回数组中第 `**k**` 个最大的元素。请注意,你需要找的是数组排序后的第 `k` 个最大的元素,而不是第 `k` 个不同的元素。你必须设计并实现时间复杂度为 `O(n)` 的算法解决此问题。 **示例 1:**```输入: [3,2,1,5,6,4], k = 2输出: 5解法一:快速选择时间复杂度:O(n)空间复杂度:O(1)class Solution {public: int quickselect(vector<int> &nums, int l, int r, int k) { if (l == r) return nums[l]; int left = l - 1, right = r + 1; int key = nums[rand() % (r - l + 1) + l]; for(int i = l; i < right;) { if(key < nums[i]) swap(nums[i], nums[--right]); else if(key > nums[i]) swap(nums[i++], nums[++left]); else i++; } int c = r - right + 1, b = right - left - 1; if(k <= c) return quickselect(nums, right, r, k); else if(k <= c + b) return key; else return quickselect(nums, l, left, k - c - b); } int findKthLargest(vector<int> &nums, int k) { srand(time(NULL)); return quickselect(nums, 0, nums.size() - 1, k); }};