首页 > 编程语言 > 详细

LeetCode 215. Kth Largest Element in an Array(数组求第k大)

时间:2020-03-29 23:35:12      阅读:54      评论:0      收藏:0      [点我收藏+]

题意:数组求第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);
    }
};

  

LeetCode 215. Kth Largest Element in an Array(数组求第k大)

原文:https://www.cnblogs.com/tyty-Somnuspoppy/p/12595365.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!