Saltar al contenido

Encontrar el nodo que se cruza a partir de dos listas enlazadas que se cruzan

Este equipo de expertos luego de muchos días de trabajo y de recopilar de información, dieron con la respuesta, nuestro deseo es que te sea de utilidad en tu trabajo.

Solución:

Esto toma el tiempo O(M+N) y el espacio O(1), donde M y N son la longitud total de las listas enlazadas. Quizás ineficiente si la parte común es muy larga (es decir, M,N >> m,n)

  1. Recorra las dos listas enlazadas para encontrar M y N.
  2. Vuelva a las cabezas, luego atraviese |M − N| nodos en la lista más larga.
  3. Ahora camine al unísono y compare los nodos hasta encontrar los comunes.

Editar: Ver más aquí.

Si es posible, podría agregar un campo de ‘color’ o similar a los nodos. Itere sobre una de las listas, coloreando los nodos a medida que avanza. Luego iterar sobre la segunda lista. Tan pronto como llegue a un nodo que ya está coloreado, habrá encontrado la intersección.

Volcar el contenido (o la dirección) de ambas listas en una tabla hash. primera colisión es su intersección.

valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *