题目

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例 2:

输入:head = [], val = 1
输出:[]
示例 3:

输入:head = [7,7,7,7], val = 7
输出:[]

思路

删除节点,让该节点的前一个节点,指向它的下一个节点,跳过它自己,达到删除该节点的目的。
设置两个指针,cur指向当前遍历节点,pre指向它的前一个节点

def removeElements(self, head: ListNode, val: int) -> ListNode:
    # 设置一个虚拟节点放在头节点前
    dummy = ListNode()
    dummy.next = head

    # 设置两个指针 cur指向当前遍历节点,pre指向当前的前一个节点
    pre = dummy
    cur = head

    while cur:
        if cur.val == val:
            pre.next = cur.next
        else:
            pre = cur
        cur = cur.next
        
    return dummy.next

Ethan
140 声望11 粉丝

水平较低,只是记录,谨慎参阅


引用和评论

0 条评论