思路
考虑到删除头结点情况
使用新链表=[-1](可随意设置)+head
对新列表进行遍历:
当pre.next and pre.next.val==val时,说明下一结点是符合删除条件的结点,则进行删除操作,否则继续往下遍历
时间复杂度: O(n)
代码
# 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: Optional[ListNode], val: int) -> Optional[ListNode]:if head is None:return Nonep=ListNode(-1)p.next=headpre=p while pre:if pre.next and pre.next.val==val:pre.next=pre.next.nextelse:pre=pre.nextreturn p.next