Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
For example,
Given [3,2,1,5,6,4]
and k = 2, return 5.
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
解答
用堆排序就好了……不过这个堆是从0开始的,还有点不适应orz
int findKthLargest(int* nums, int numsSize, int k) { int i, j, tmp, largest; ) / ; i >= ; i--){ + < numsSize){ + < numsSize&&nums[i * + ] < nums[i * + ]){ largest = i * + ; } else{ largest = i * + ; } if(nums[i] < nums[largest]){ tmp = nums[i]; nums[i] = nums[largest]; nums[largest] = tmp; i = largest; } else{ break; } } } ; j < k - ; j++){ nums[] = nums[numsSize - ]; numsSize--; i = ; + < numsSize){ + < numsSize&&nums[i * + ] < nums[i * + ]){ largest = i * + ; } else{ largest = i * + ; } if(nums[i] < nums[largest]){ tmp = nums[i]; nums[i] = nums[largest]; nums[largest] = tmp; i = largest; } else{ break; } } } ]; }