leetcode 203题

Posted by franki on September 9, 2021

leetcode 203题 移除链表元素

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

示例 1:

输入: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
输出:[]

思路

双指针

代码

function removeElements(head, val) {
    if (head === null) {
        return head;
    }

    let newHead = new ListNode(0);
    newHead.next = head;
    let prev = newHead;
    let curr = head;

    while (curr) {
        if (curr.val === val) {
            prev.next = curr.next;
        } else {
            prev = curr;
        }
        curr = curr.next;
    }

    return newHead.next;
}

复杂度分析

  • 时间复杂度:O(N)
  • 空间复杂度:O(N)