知识点 单链表删除
(待补充)
解法一 在head前构造一个新的节点
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
r = ListNode(next=head) # new node
p = r # loop param
while(p.next!=None):
if p.next.val == val:
p.next = p.next.next # delete node
else:
p = p.next # backward
return r.next # return head
解法二 递归
每步其实进行的操作都一样 ,所以可以用递归解决
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
if head == None:
return head
head.next = self.removeElements(head.next,val)
return head.next if head.val==val else head