K 번째로 큰 숫자를 나누고 정복하십시오.

문제 설명:

정렬되지 않은 배열에서 k 번째로 큰 요소를 찾습니다 . 정렬 된 순서에서 k 번째 고유 요소가 아니라 k 번째로 큰 요소입니다.

예 1 :

입력 : [3,2,1,5,6,4]  및 k = 2
 출력 : 5

예 2 :

입력 : [3,2,3,1,2,4,5,5,6]  및 k = 4
 출력 : 4

문제 해결됨:

힙 정렬 사용 :

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        make_heap(nums.begin(), nums.end());
        for(int i = 0; i < k - 1; i++)
            pop_heap(nums.begin(), nums.end()-i);
        return *nums.begin();

    }
};

 

추천

출처blog.csdn.net/j515332019/article/details/82724402