题解 | #寻找第K大#

寻找第K大

http://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf

class Solution {
public:
    int findKth(vector<int> a, int n, int K) {
        return qfindKth(a, 0, n-1, K);
    }
    int qfindKth(vector<int> &a, int left, int right, int K){//自己构建的快速排序算法
        int l = left,r = right;
        int ans = a[left];
        while(l<r){
            while(l<r && a[r] <= ans) r--;
            a[l] = a[r];

            while(l<r && a[l] >= ans) l++;
            a[r] = a[l];
        }
        a[l] = ans;
        if(l == K-1) return a[l];//如果已经是第k个了,就返回,否则就接着快速排序
        else if(l > K-1) return qfindKth(a, 0, l-1, K);
        else return qfindKth(a,l+1, right,K);
    }
};
全部评论

相关推荐

大疆在线测评都考什么呀,会考企业概况啥的吗
又被画饼了的做题家很...:不会。刚做完,就是材料分析、态度题、算术题、逻辑题。总共60道。
投递大疆等公司7个岗位
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务