215. 数组中的第K个最大元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

示例 1:

输入: [3,2,1,5,6,4] 和 k = 2
输出: 5

示例 2:

输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4

其目的是让手写排序算法,哈哈先sort快乐一下

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
            sort(nums.begin(),nums.end());
            return nums[nums.size() - k] ;
    }
};

言归正传,手写快排

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        quick_sort(nums,0,nums.size()-1) ;
        return nums[nums.size() - k] ;
    }
    void quick_sort(vector<int>& nums,int l,int r){
         if(l >= r) return  ;
         int x = nums[l + r >> 1] ; int i = l - 1 ; int j = r + 1 ;
         while(i < j){
             do i ++ ; while(nums[i] < x) ;
             do j -- ; while(nums[j] > x) ;
             if(i < j) swap(nums[i],nums[j]) ; 
         }
         quick_sort(nums,l,j) ;
         quick_sort(nums,j+1,r) ;
         
    }
};
posted @ 2022-01-23 20:35  爪洼ing  阅读(30)  评论(0编辑  收藏  举报