码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Kth Largest Element in an Array

时间:2015-05-25 10:00:10      阅读:150      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!