https://www.lintcode.com/problem/5/?_from=cat
[]
what is the bug?
[code]
public class Solution {
/**
* @param k: An integer
* @param nums: An array
* @return: the Kth largest element
*/
public int kthLargestElement(int k, int[] nums) {
// write your code here
return kthLargestElement(k, nums, 0, nums.length-1);
}
int kthLargestElement(int k, int[] nums, int l, int r){
int pInx = partition(nums, l, r);
int len = nums.length;
if(pInx > len - k){
int rlen = len-1 - pInx;
return kthLargestElement(k-rlen-1, nums, l, pInx-1);
}
if(pInx < len - k){
return kthLargestElement(k, nums, pInx+1, r);
}
return nums[pInx];
}
int partition(int[] nums, int left, int right){
int pivot = nums[left];
int l = left + 1;
int r = right;
while(l < r){
if(nums[l] < pivot){
l++;
continue;
}
if(nums[r] >= pivot){
r--;
continue;
}
swap(nums, l, r);
l++;
r--;
}
if(nums[l]>=pivot){
l--;
}
swap(nums, left, l);
return l;
}
void swap(int[] arr, int i, int j){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}