Explore diversas soluciones LeetCode en Python, C++, JavaScript, SQL y TypeScript. Ideal para preparación de entrevistas, aprendizaje y práctica de código en múltiples lenguajes de programación. Enlace de repositorio de Github
Se le proporciona el encabezado de una lista enlazada individualmente. La lista se puede representar como:
l0 → L1 → … → Ln-1 → Lnorte
Reordene la lista para que esté en el siguiente formulario:
l0 → Lnorte → L1 → Ln-1 → L2 → Ln-2 →…
No puede modificar los valores en los nodos de la lista. Solo se pueden cambiar los nodos en sí.
Ejemplo 1:
Aporte: cabeza = [1,2,3,4] Producción: [1,4,2,3]
Ejemplo 2:
Aporte: cabeza = [1,2,3,4,5] Producción: [1,5,2,4,3]
Restricciones:
- El número de nodos en la lista está en el rango
[1, 5 * 10 4 ]
. 1 <= Valor.nodo <= 1000
Pitón
Complejidad de tiempo de #: O(n) Complejidad de espacio de #: O(1) al escribir import Clase opcional ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solución: def reorderList(self, head: Opcional[ListNode]) -> Ninguno: si no head: return fast = head slow = head mientras es rápido y fast.next: fast = fast.next.next slow = slow.next prev = Ninguno curr = lento mientras curr: curr.siguiente, anterior, curr = anterior, curr, curr.siguiente primero = cabeza segundo = anterior mientras segundo.siguiente: primero.siguiente, primero = segundo, primero.siguiente segundo.siguiente, segundo = primero, segundo.siguiente retorno raíz = ListNode(1) raíz.siguiente = ListaNodo(2) raíz.siguiente.siguiente = ListaNodo(3) raíz.siguiente.siguiente.siguiente = ListaNodo(4) raíz.siguiente.siguiente.siguiente.siguiente = ListNode(5) root.next.next.next.next.next = ListNode(6) print(Solución().reorderList(raíz))