# 203. Remove Linked List Elements

### Leetcode

<https://leetcode.com/problems/remove-linked-list-elements/>

### 題目

Given the `head` of a linked list and an integer `val`, remove all the nodes of the linked list that has `Node.val == val`, and return *the new head*.

&#x20;

**Example 1:**

![](https://assets.leetcode.com/uploads/2021/03/06/removelinked-list.jpg)

```
Input: head = [1,2,6,3,4,5,6], val = 6
Output: [1,2,3,4,5]
```

**Example 2:**

```
Input: head = [], val = 1
Output: []
```

**Example 3:**

```
Input: head = [7,7,7,7], val = 7
Output: []
```

### 解答 <a href="#ti-jie" id="ti-jie"></a>

* **方法一**

```
var removeElements = function(head, val) {
    const dummy = new ListNode(-1);
    dummy.next = head;
    
    let lastNode = dummy;
    while(lastNode) {
        // 只要下一個等於 val，就一直把 lastNode 指到下下個 node
        while(lastNode.next?.val === val) {
           lastNode.next = lastNode.next?.next;
        }
        lastNode = lastNode.next;
    }
    return dummy.next;
};
```

Runtime: 88 ms, faster than 91.34% of JavaScript online submissions for Remove Linked List Elements.

Memory Usage: 43.4 MB, less than 63.33% of JavaScript online submissions for Remove Linked List Elements.
