题解 | #寻找第K大#

寻找第K大

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

解题思路:

使用快速排序

#include <vector>
class Solution {
public:
    int Partition(vector<int> &nums,int low,int high)
    {
        int pioviate = nums[low];
        while(low < high)
        {
            while(low < high && pioviate >= nums[high])
                high--;
            nums[low] = nums[high];
            while(low < high && pioviate <= nums[low])
                low++;
            nums[high] = nums[low];
        }
        nums[low] = pioviate;
        return low;
    }
    int findKth(vector<int> a, int n, int K) {
        // write code here
        int low = 0;
        int high = n-1;
        while(1)
        {
            int pioviate = Partition(a, low, high);
            if(pioviate == K-1)
                return a[pioviate];
            else if(pioviate < K-1)
            {
                low = pioviate +1;
            }
            else {
                high = pioviate -1;
            }
        }
    }
};

全部评论

相关推荐

01-18 09:26
已编辑
门头沟学院 Java
王桑的大offer:建议中间件那块写熟悉即可,写掌握 面试包被拷打到昏厥
点赞 评论 收藏
分享
牛客765689665号:没有实习是硬伤,央国企看学历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务