第6题:203. 移除链表元素
题目
思路
- 非头节点:找到节点的前一个节点,指向节点的下一个节点
- 头节点:移到头节点的下一个节点,作为新的头节点,可以增加一个虚拟头节点,则处理思路和非头节点一致。
使用虚拟头节点的方法过程:
- 可以用统一的规则删除
- 用while,是持续移除的过程
- 定义一个dummy head 的下一个节点是原来的头节点
- 定义cur用来遍历,cur=dummy head ,删除的是cur next value =target的
- 遍历结束,返回的是虚拟头节点的下一个,才是新链表的头节点
class Solution:
def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
# 定义虚拟头节点
dummy_head = ListNode(next=head)
cur = dummy_head
while(cur.next!=None):
if(cur.next.val == val):
# 删除
cur.next = cur.next.next
else:
cur = cur.next
return dummy_head.next