天天看點

LeetCode——數組中的第K個最大元素(JS實作)

題目描述

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。

繼續閱讀