本文主要是介绍[牛客网刷题 Day3] JZ18 删除链表的节点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
思考:
记录目标节点前的位置before,以及目标节点以后的位置after,再用before.next=after,不过还是遇到了老问题!before走着走着,就丢掉了前面的点了!需要一个dummy=before,指向同一个地址,再让before指向after,就好啦。
其实不要after节点也可以呢,before指向cur.next也是一样的道理呢。
class Solution:def deleteNode(self , head: ListNode, val: int) -> ListNode:if head is None:return Noneif head.val == val:return head.nextcurr = headdummy = before = headwhile curr:if curr.val == val:curr = curr.nextbreakelse:before = currcurr = curr.nextbefore.next = currreturn dummy
看了一下参考答案,只用到了两个指针,head一直往后走,遇到目标值就head.next = head.next.next
。
class Solution:def deleteNode(self , head: ListNode, val: int) -> ListNode:# write code herecur=headwhile head and head.next:if head.next.val==val:if head.next.next==None:head.next=Nonereturn curelse:head.next=head.next.nextif head.val==val:return head.nexthead=head.nextreturn cur
这篇关于[牛客网刷题 Day3] JZ18 删除链表的节点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!