Mi solución para esto es O (Nlog (K)) donde N es el número total de números y K es el número de las listas enlazadas hacia abajo.
Primero declare los punteros K y P’i señala la i ésima lista vinculada.
Empuje todos los elementos puntiagudos en el montón mínimo con pares (elemento, i)
luego haga estallar y mueva el puntero de elementos reventados 1 hacia abajo
Creo que sería más fácil si escribiera un pseudocódigo
- ¿Cuál es el mejor algoritmo?
- ¿Cómo son útiles las estructuras de datos?
- ¿Cuál: Estructura de datos y pensamiento algorítmico con Python (Narasimha Karumanchi) o Estructuras de datos y algoritmos en Python (Michael T. Goodrich)?
- ¿Cuál es un ejemplo de un buen algoritmo que se puede usar para unir a diferentes usuarios dentro de un determinado radio en cualquier ubicación según sus preferencias?
- ¿Qué libros debería leer alguien para comprender completamente una introducción a los algoritmos? ¿Qué lo hará realmente entenderlo?
puntero P [K] mientras que (i <K) P [i] = raíz heap.push (par (P [i] .key, i)) root = root.right while (! heap.empty ()) temp = heap.top (); heap.pop (); imprimir temp. primero P [temp.second] = P [temp.second] .down heap.push (par (P [i] .key, i))
Y también hay una respuesta más detallada en stackexchange
Montón: asigne un algoritmo de tiempo $ O (n \ lg k) $ para combinar listas ordenadas de $ k $ en una lista ordenada