刪除鏈表中等于給定值 val 的所有節(jié)點(diǎn)。
示例:
輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
迭代
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
dummy = ListNode(0)
dummy.next = head
prev = dummy
last = prev.next
while last :
if last.val == val:
prev.next = last.next
last = prev.next
else:
prev = prev.next
last = prev.next
return dummy.next
遞歸
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
if not head: return
head.next = self.removeElements(head.next, val)
return head.next if head.val == val else head
添加輔助頭指針
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
newH = ListNode(0)
newH.next = head
pre, p = newH, head
while p:
if p.val == val:
pre.next = p = p.next
else:
pre, p = p, p.next
return newH.next