概述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
输入:head = [], val = 1
输出:[]
输入:head = [7,7,7,7], val = 7
输出:[]
方法一:头节点
思路:首先循环找到头节点,然后依次对节点判断即可。
# 头节点
# 首先循环找到头节点,然后依次对节点判断即可。
class Solution:
def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
while head and head.val == val:
head = head.next
if head is None:
return head
node = head
while node.next:
if node.next.val == val:
node.next = node.next.next
else:
node = node.next
return head
# 递归
# 用链表递归到尾端,然后从后往前判断删除即可。
class Solution:
def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
if head is None:
return head
head.next = self.removeElements(head.next, val)
return head.next if head.val == val else head