[Pregunta diaria] 24: El elemento más grande de Kth en la matriz

Descripción del título

Encuentra el k-ésimo elemento más grande en la matriz sin clasificar. Tenga en cuenta que lo que necesita encontrar es el k-ésimo elemento más grande después de que se ordena la matriz, no el k-ésimo elemento diferente.

Ejemplo 1:

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

Explicación

Puede suponer que k siempre es válido y 1 ≤ k ≤ la longitud de la matriz.

Ley de violencia

Código de demostración:

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

Usa una pequeña pila superior

Código de demostración:

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();
    }
};

Use una pila superior grande

Código de demostración:

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 tiene opiniones diferentes, ¡deje un mensaje para discutir! ! !

152 artículos originales publicados · 45 elogiados · 10,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/AngelDg/article/details/105369770
Recomendado
Clasificación