Skip to content

题意:删除链表中等于给定值 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 输出:[]

思路:设置一个虚拟头结点来方便操作。然后利用prev和current来执行删除操作

javascript
/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} val
 * @return {ListNode}
 */
var removeElements = function(head, val) {
    var prev = new ListNode('', head)
    var newHead = prev
    while(head) {
        if (head.val === val) {
            prev.next = head.next
        } else {
            prev = head
        }
        head = head.next
    }

    return newHead.next
};

上次更新于: