删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
思路:
双指针法,pre和cur分别指着当前节点的前一个节点,和当前节点,
然后按删除node的流程操作就可以。
class Solution(object):
def removeElements(self, head, val):
"""
:type head: ListNode
:type val: int
:rtype: ListNode
"""
if not head:
return head
dummy = ListNode(-1)
dummy.next = head
pre, cur = dummy, head
while cur:
if cur.val == val: #需要被删除
pre.next = cur.next
cur.next = None
cur = pre.next
else:
pre = pre.next
cur = cur.next
return dummy.next