LeetCode OJ 215. Kth Largest Element in an Array

时间:2025-03-15 16:36:31

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;
            }
        }
    }
    ];
}