Учитывая массив целых чисел nums и целое число k, вернуть самый большой kth элемент в массиве.

Обратите внимание, что это kth самый большой элемент в отсортированном порядке, а не kth отдельный элемент.

Можете ли вы решить ее без сортировки?

Пример 1:

Input: nums = [3,2,1,5,6,4], k = 2
Output: 5

Пример 2:

Input: nums = [3,2,3,1,2,4,5,5,6], k = 4
Output: 4

Ограничения:

  • 1 <= k <= nums.length <= 105
  • -104 <= nums[i] <= 104

Два момента, о которых нужно позаботиться…

  1. kth самый большой элемент в отсортированном порядке, а не kth отдельный элемент.
  2. решить его без сортировки
class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        priority_queue<int> pq;
        for(int i=0;i<nums.size();i++){
            pq.push(nums[i]);
        }
        int x=-1;
        while(k--){
            x=pq.top();
            pq.pop();
        }
        return x;
    }
};

Это очень простой вопрос… используйте очередь с приоритетом (максимальная куча) вставьте все элементы, а затем удалите k элементов из очереди с наивысшим приоритетом (pq) …вашим ответом будет удаление последнего элемента.

Примечание. - Если запрашивается отдельный, используйте Set

Спасибо . Продолжай учиться :)