首页 > 其他 > 详细

LeetCode Kth Largest Element in an Array

时间:2015-05-25 09:58:36      阅读:136      评论:0      收藏:0      [点我收藏+]

LeetCode Kth Largest Element in an Array

题目

技术分享

思路

利用快排的思想,每次都能得到一个位置mid;
并且我们知道在mid之前的数都是大于nums[mid];
并且我们知道在mid之后的数都是小于nums[mid];
根据K和mid的大小即可继续划分下去;
直到找到目标。

代码

int Adjust(int * nums, int l, int r) {
    int K = nums[l];
    while (l < r) {
        while (l < r && nums[r] <= K) r--;
        nums[l] = nums[r];
        while (l < r && nums[l] >= K) l++;
        nums[r] = nums[l];
    }
    nums[l] = K;
    return l;
}

int QS(int * nums, int l, int r, int k) {
    if (l <= r) {
        int mid = Adjust(nums, l, r);
        if (k == mid) return nums[mid];
        if (k < mid) return QS(nums, l, mid - 1, k);
        if (k > mid) return QS(nums, mid + 1, r, k);
    }
}

int findKthLargest(int* nums, int numsSize, int k) {
    return QS(nums, 0, numsSize - 1, k - 1);
}

LeetCode Kth Largest Element in an Array

原文:http://blog.csdn.net/u012925008/article/details/45965627

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!