# 203 移除链表元素

# 题目

删除链表中等于给定值 val 的所有节点。

示例:

输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5##

# 题解

  1. 创建一个临时节点,并把临时节点作为头结点,这样方便迭代遍历。遍历找到节点时,用上一个节点的 next 指向当前节点的 next 即可。

TIP

执行用时:96 ms, 在所有 JavaScript 提交中击败了 90.92% 的用户
内存消耗:42.4 MB, 在所有 JavaScript 提交中击败了 9.02% 的用户
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} val
 * @return {ListNode}
 */
var removeElements = function(head, val) {
    let sentinel = new ListNode('', head)
    let previous = sentinel

    if(!previous) return head

    while(previous.next != null) {
        let current = previous.next

        if(current.val == val) {
            previous.next = current.next
        } else {
            previous = current
        } 
    }

    return sentinel.next
};
  • 时间复杂度: `O(n)`,一个 while循环
  • 空间复杂度: `O(1)`,几个常量
  • 最好情况:
  • 最坏情况:
最后更新时间: 10/21/2020, 11:17:16 PM