Dado el puntero de encabezado de una lista enlazada unidireccional y el valor de un nodo a eliminar, defina una función para eliminar el nodo.
Devuelve el nodo principal de la lista vinculada eliminada.
Nota: esta pregunta ha cambiado de la pregunta original
Ejemplo 1:
输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
Ejemplo 2
输入: head = [4,5,1,9], val = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
Descripción:
题目保证链表中节点的值互不相同
若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点
Fuente: Enlace LeetCode (LeetCode)
: https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof Los
derechos de autor pertenecen a la red de deducción. Comuníquese con la autorización oficial para la reimpresión comercial e indique la fuente de la reimpresión no comercial.
Idea: recorrer la lista vinculada
atravesar directamente la lista vinculada para encontrar el valor correcto.
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteNode(self, head: ListNode, val: int) -> ListNode:
newhead = head
pre = head
while head != None:
if head.val == val:
if newhead == head:
newhead = head.next
else:
pre.next = head.next
break
pre = head
head = head.next
return newhead