題目描述
LeetCode——數組中的第K個最大元素(JS實作) 解題思路
- 本題思路較為簡單,首先對數組按照從小到大進行排序。
- 使用reverse将數組進行反轉。
- 傳回反轉數組的第k-1個元素即可。
- 本次沒有采取JS自帶的sort,而是自己實作了快速排序。
解題代碼
var findKthLargest = function (nums, k) {
// 快速排序
function sort(nums, Left, Right) {
let l = Left;
let r = Right;
let pivot = nums[l];
if (l >= r) return;
while (l < r) {
while (nums[r] >= pivot && l < r) {
r--;
}
if (nums[r] < pivot) {
nums[l] = nums[r];
l++;
}
while (nums[l] <= pivot && l < r) {
l++;
}
if (nums[l] > pivot) {
nums[r] = nums[l];
r--;
}
if (l === r) {
nums[l] = pivot
}
}
sort(nums, Left, l - 1);
sort(nums, r + 1, Right);
}
sort(nums,0,nums.length-1);
nums
return nums.reverse()[k-1]
};
複制代碼
題目反思
- 熟練掌握快速排序。
- 熟練使用JS中的各種常用API。