题目描述:
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。
1.此题对比原题有改动
2.题目保证链表中节点的值互不相同
3.该题只会输出返回的链表和结果做对比,所以若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点
示例1:
输入:{2,5,1,9},5
返回值:{2,1,9}
说明:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 2 -> 1 -> 9
解题思路:
根据题目描述及所给的例子,需要找到与所给数值相同的节点,删除即可,且链表中节点值各不相同。
对于删除链表中的节点,只需在设置一个前向节点,以及当前节点,前向节点的next赋值为当前节点的next,即可删除当前节点。
class Solution:
def deleteNode(self , head: ListNode, val: int) -> ListNode:
# write code here
pre=head
cur=head.next
while cur:
if head.val==val:
head=head.next
break
if cur.val==val:
pre.next=cur.next
break
pre=pre.next
cur=cur.next
return head