腾讯五十题 No.38 数组中第k个最大元素

题目链接
先用库函数试一下

快排:从两边往中间走,找个参照值,左边的大于参照值,右边的等于参照值时就交换这两个数。

class Solution {
    public int findKthLargest(int[] nums, int k) {
        qsort(nums, 0, nums.length - 1);
        return nums[nums.length-k];
    }
    public void qsort(int[] nums, int l, int r) {
        if(l >= r) return;
        int i = l - 1, j = r + 1, x = nums[l + r >> 1];
        while(i < j){
            do i++; while(nums[i] < x);
            do j--; while(nums[j] > x);
            if(i < j){
                int tmp = nums[i];
                nums[i] = nums[j];
                nums[j] = tmp;
            }
        }
        //用j做递归边界
        qsort(nums, l, j);
        qsort(nums, j + 1, r);
    }
}

posted @   蹇爱黄  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示