[Question quotidienne] 24: Le Kème plus grand élément du tableau

Description du titre

Trouvez le k-ème élément le plus grand dans le tableau non trié. Notez que ce que vous devez trouver est le k-ème élément le plus grand après le tri du tableau, pas le k-ème élément différent.

Exemple 1:

输入: [3,2,1,5,6,4] 和 k = 2
输出: 5

Explication:

Vous pouvez supposer que k est toujours valide et 1 ≤ k ≤ la longueur du tableau.

Loi sur la violence

Code de démonstration:

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        if(nums.size() < k || nums.size() == 0){
            return 0;
        }
        sort(nums.begin(), nums.end());
        return nums[nums.size() - k];
    }
};

Utilisez une petite pile supérieure

Code de démonstration:

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        if(nums.size() < k || nums.size() == 0){
            return 0;
        }

        priority_queue<int, vector<int>, greater<int>> pq;

        for(int i = 0; i < nums.size(); i++)
        {
            pq.push(nums[i]);
            if (int(pq.size()) > k)
            {
                pq.pop();
            }
        }
        
        return pq.top();
    }
};

Utilisez une grande pile supérieure

Code de démonstration:

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        if(nums.size() < k || nums.size() == 0){
            return 0;
        }
        
        int i;
        priority_queue<int> p(nums.begin(), nums.end());
        // 将优先级队列中前k-1个元素删除掉 
        //priority_queue<int, vector<int>, less<int>> pq;

        //for(i = 0; i < nums.size(); i++){
        //    pq.push(nums[i]);
        //}
        for(i = 1; i < k; i++){
            pq.pop();
        }
        return pq.top();
    }
};

Si vous avez des opinions différentes, veuillez laisser un message pour en discuter! ! !

Publié 152 articles originaux · loué 45 · 10,000+ vues

Je suppose que tu aimes

Origine blog.csdn.net/AngelDg/article/details/105369770
conseillé
Classement