215. Kth Largest Element in an Array
难度中等1907
\
解题思路
1.快速排序 选定 pivot元素,每次 partition 分割的时候 i j 两个元素 i = start j = i + 1 每当遇到 比pivot 元素小的元素时, 移动 i 2.交换 swap(arr,i,j) 每次小的时候, 最后需要执行 swap(arr, i ,start) 3.返回 i , 如果 i === arr.length - k 的话则说明遇到了第 k 大的元素
代码
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var findKthLargest = function (nums, k) {
let target
const swap = (arr, i, j) => {
[arr[i], arr[j]] = [arr[j], arr[i]]
}
const partition = (arr, start, end) => {
const pivot = arr[start]
let i = start
for (let j = i + 1; j < end; j++) {
if (arr[j] < pivot) {
i++
swap(arr, i, j)
}
}
swap(arr, start, i)
return i
}
function quickSort(arr, start, end) {
if (start < end) {
const p = partition(arr, start, end)
if (p === arr.length - k) {
target = arr[p]
return
}
quickSort(arr, start, p)
quickSort(arr, p + 1, end)
}
}
quickSort(nums, 0, nums.length, k)
return target
};