banco de preguntas leetCode 215: Kth elemento más grande en la matriz

Titulo:

  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:

Entrada: [3,2,1,5,6,4] yk = 2 
Salida: 5

Ejemplo 2

Entrada: [3,2,3,1,2,4,5,5,6] yk = 4 
Salida: 4

  Explicación: puede suponer que k siempre es válido y 1 ≤ k ≤ la longitud de la matriz.

 

Análisis:

  1. Lo primero que se le ocurre es ordenar la matriz y luego tomar el késimo número más grande;

  2. Se puede mantener un pequeño montón superior de tamaño K. Cuando el número de elementos en el montón es menor que k, ingrese directamente el montón, cuando el número de elementos en el montón es k, compare el valor del elemento superior y el nuevo elemento, si es mayor que el elemento superior del montón Luego, coloque la parte superior de la pila en la pila, de lo contrario no entre;

 

Código:

/ ** 
     * Complejidad de tiempo: la complejidad de tiempo de agregar un elemento a un montón de tamaño k es O (logK). Repita esta operación N veces, por lo que la complejidad de tiempo total es O (NlogK) 
     * Complejidad de espacio: O ( K) 
     * / 
    public  int findKthLargest ( int [] nums, int k) { 
        PriorityQueue <Integer> heap = new PriorityQueue <Integer> ();
         for ( int num: nums) {
             if (heap.size () <k) {        // el número de elementos en la pila es menor que k, directamente en la pantalla 
                heap.add (NUM); 
            } la otra  IF (heap.element () <NUM) {     // parte superior de la pila de elementos es menor que un nuevo elemento, la parte superior pop de la pila, un nuevo elemento en la pila
                 montón .poll ();
                heap.add (num); 
            } 
        } 
        return heap.element (); 
    }

 

Supongo que te gusta

Origin www.cnblogs.com/guaniu2750/p/12740701.html
Recomendado
Clasificación