题意:数组求第k大。

分析:快排

class Solution {
public:
    int Partition(vector<int>& nums, int l, int r){
        int p = nums[l];
        while(l < r){
            while(l < r && nums[r] >= p) --r;
            nums[l] = nums[r];
            while(l < r && nums[l] <= p) ++l;
            nums[r] = nums[l];
        }
        nums[l] = p;
        return l;
    }
    int QuickSort(vector<int>& nums, int k, int l, int r){
        int p = Partition(nums, l, r);
        if(r - p + 1 == k) return nums[p];
        else if(r - p + 1 > k) return QuickSort(nums, k, p + 1, r);
        else return QuickSort(nums, k - (r - p + 1), l, p - 1);
    }
    int findKthLargest(vector<int>& nums, int k) {
        int len = nums.size();
        return QuickSort(nums, k, 0, len - 1);
    }
};

  

相关文章:

  • 2022-12-23
  • 2022-03-03
  • 2021-04-29
  • 2022-01-03
  • 2022-03-06
猜你喜欢
  • 2021-05-04
  • 2021-04-29
  • 2021-07-03
  • 2021-10-09
  • 2021-08-03
  • 2022-12-23
  • 2021-09-12
相关资源
相似解决方案