题目描述
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
输入: [3,2,1,5,6,4] 和 k = 2
输出: 5
解释:排序后数组结果[1,2,3,4,5,6], 取第二大的那个数就是 5
分析
- 这个题目直接想就是数组通过排序后获取倒数第k个数
- 这里我使用快速排序
代码
// 快速排序
function quicksort(nums, low, high) {
let i;
let j;
let s;
while (high > low) {
i = low;
j = high;
s = nums[low];
while (i < j) {
while (nums[j] > s) {
j--;
}
nums[i] = nums[j];
while (s >= nums[i] && i < j) {
i++;
}
nums[j] = nums[i];
}
nums[i] = s;
quicksort(nums, low, i - 1);
low = i + 1;
}
return nums;
}
var findKthLargest = function(nums, k) {
const newNums = quicksort(nums, 0, nums.length - 1);
return newNums[nums.length - k];
};