Pregunta diaria de LeetCode 703. El quinto elemento más grande en el flujo de datos

703. El Kth elemento más grande en el flujo de datos

Diseño del primer flujo de datos para encontrar una kclase de elementos grandes (clase). Tenga en cuenta que después de la ordenación de klos elementos principales, no son los primeros kelementos diferentes.

Por favor, tenga en cuenta las KthLargestcategorías:

KthLargest(int k, int[] nums)El kflujo de enteros y enteros numsinicializa el objeto.
int add(int val)El valflujo de datos de inserción nums, el flujo de corriente de retorno del primer kelemento grande.

Ejemplo:

输入:
["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

inmediato:

  • 1 <= k <= 104
  • 0 <= núm. De longitud <= 104
  • -104 <= números [i] <= 104
  • -104 <= val <= 104
  • El método add se puede llamar hasta 104 veces
  • Los datos del título garantizan que al buscar el k-ésimo elemento más grande, hay al menos k elementos en la matriz

Método 1: cola de prioridad

Ideas para resolver problemas

Las ideas no son importantes, ¡les deseo a todos un feliz año nuevo! !

Código de referencia

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

Resultados de la
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_27007509/article/details/113791943
Recomendado
Clasificación