LeetCode Daily Question 703. Le Kth plus grand élément du flux de données

703. Kième élément le plus important du flux de données

Conception du premier flux de données pour trouver une kclasse d'éléments volumineux (classe). Notez qu'après l'ordination des kéléments majeurs, ce ne sont pas les premiers kéléments différents.

Veuillez réaliser les KthLargestcatégories:

KthLargest(int k, int[] nums)Les kflux entiers et entiers numsinitialisent l'objet.
int add(int val)Le valflux de données d'insertion nums, le flux de courant de retour du premier kgrand élément.

Exemple:

输入:
["KthLargest", "add", "add", "add", "add", "add"]
[[3, [4, 5, 8, 2]], [3], [5], [10], [9], [4]]
输出:
[null, 4, 5, 5, 8, 8]

解释:
KthLargest kthLargest = new KthLargest(3, [4, 5, 8, 2]);
kthLargest.add(3);   // return 4
kthLargest.add(5);   // return 5
kthLargest.add(10);  // return 5
kthLargest.add(9);   // return 8
kthLargest.add(4);   // return 8

rapide:

  • 1 <= k <= 104
  • 0 <= longueur numérique <= 104
  • -104 <= nums [i] <= 104
  • -104 <= val <= 104
  • La méthode add peut être appelée jusqu'à 104 fois
  • Les données de titre garantissent que lors de la recherche du k-ème élément le plus grand, il y a au moins k éléments dans le tableau

Méthode 1: file d'attente prioritaire

Idées de résolution de problèmes

Les idées n'ont pas d'importance, je vous souhaite à tous une bonne année! !

Code de référence

class KthLargest {
    
    
    private PriorityQueue<Integer> queue;
    private int k;

    public KthLargest(int k, int[] nums) {
    
    
        this.queue = new PriorityQueue<>();
        this.k = k;
        for (int val : nums) {
    
    
            add(val);
        }
    }

    public int add(int val) {
    
    
        queue.offer(val);
        if (queue.size() > k) {
    
    
            queue.poll();
        }
        return queue.peek();
    }
}

Résultats de la
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_27007509/article/details/113791943
conseillé
Classement