面试必考精华版Leetcode215. 数组中的第K个最大元素

题目:


代码(2023年10月27日首刷看解析):

cpp 复制代码
class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        return quickselect(nums,k);
    }

    int quickselect(vector<int>& nums,int k){
        vector<int> big,equel,small;
        int pivot = nums[rand()%nums.size()];
        for(auto num:nums){
            if(num>pivot){
                big.push_back(num);
            }else if(num<pivot){
                small.push_back(num);
            }else{
                equel.push_back(num);
            }
        }
        if(k<=big.size()){
            return quickselect(big,k);
        }
        else if(nums.size()-small.size()<k){
            return quickselect(small,k-(nums.size()-small.size()));
        }
        return pivot;
    }
};

时间复杂度为O(N)

相关推荐
Sunsets_Red16 分钟前
2025 FZYZ夏令营游记
java·c语言·c++·python·算法·c#
apollo_qwe17 分钟前
前端缓存深度解析:从基础到进阶的实现方式与实践指南
前端
周星星日记25 分钟前
vue中hash模式和history模式的区别
前端·面试
Light6025 分钟前
Vue 高阶优化术:v-bind 与 v-on 的实战妙用与思维跃迁
前端·低代码·vue3·v-bind·组件封装·v-on·ai辅助开发
周星星日记25 分钟前
5.为什么vue中使用query可以保留参数
前端·vue.js
lebornjose26 分钟前
javascript - webgl中绑定(bind)缓冲区的逻辑是什么?
前端·webgl
瘦的可以下饭了30 分钟前
Day05- CSS 标准流、浮动、Flex布局
前端
前端无涯32 分钟前
React中setState后获取更新后值的完整解决方案
前端·react.js
西愚wo33 分钟前
前端开发者必备:在浏览器控制台批量提取HTML表单字段名(Label)
前端
iAkuya40 分钟前
(leetcode)力扣100 19螺旋矩阵(方向数组/边界把控)
算法·leetcode·矩阵