[Leetcode] 0019. Eliminar el enésimo nodo del final de la lista

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

Medio
 

Dado que cabeza de una lista enlazada, elimine el n.º nodo desde el final de la lista y devuelve su encabezado.

Ejemplo 1:

Aporte: cabeza = [1,2,3,4,5], n = 2
Producción: [1,2,3,5]

Ejemplo 2:

Aporte: cabeza = [1], n = 1
Producción: []

Ejemplo 3:

Aporte: cabeza = [1,2], n = 1
Producción: [1]

Restricciones:

  • El número de nodos en la lista es talla.
  • 1 <= tamaño <= 30
  • 0 <= Valor.nodo <= 100
  • 1 <= n <= tamaño

Hacer un seguimiento: ¿Podrías hacer esto de una sola vez?

Tabla de contenido

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 removeNthFromEnd(self, head: Opcional[ListNode], n: int) -> Opcional[ListNode]: total = 0 countNode = resNode = head while countNode: total += 1 countNode = countNode.next delIdx = total - n - 1 si delIdx < 0: head = head.next devuelve head currentIdx = 0 mientras resNode: si currentIdx == delIdx: si resNode.next.next: resNode.next = resNode.next.next else: resNode.next = Ninguno devuelve head else : resNode = resNode.next currentIdx += 1 return head root = ListNode(1) root.next = ListNode(2) root.next.next = ListNode(3) root.next.next.next = ListNode(4) raíz. next.next.next.next = ListNode(5) print(Solución().removeNthFromEnd(raíz, 2))
				
			
es_ESEspañol