题目链接:
215. 数组中的第K个最大元素 - 力扣(LeetCode)
题解:
首当其冲的方法是 排序 然后找到第k个最大的元素
js内置了sort方法,但是我还是自己回忆了一下快速排序(下次回忆一下归并排序)当然快排没过,排序算法应当是根本数据量来选择对应的算法,而不是用一个能搞好
code:
javascript
var findKthLargest = function(nums, k) {
if (nums.length === 0) return 0;
mySort(nums);
return nums[nums.length - k]; // 修正索引
};
贴出快排算法:
javascript
function mySort(nums, start = 0, end = nums.length - 1) {
if (start >= end) return;
let temp = nums[start];
let left = start;
let right = end;
while (left < right) {
while (nums[right] > temp && left < right) right--;
while (nums[left] <= temp && left < right) left++;
if (left < right) {
[nums[left], nums[right]] = [nums[right], nums[left]];
}
}
[nums[start], nums[left]] = [nums[left], nums[start]];
mySort(nums, start, left - 1);
mySort(nums, left + 1, end);
}