Appearance
203. 移除链表元素
原题链接: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 输出:[]
提示:
列表中的节点数目在范围 [0, 104] 内
1
0
难度: Easy
题解代码
javascript
/**
* 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) {
// // a=>b=>c=>
// // 是否为第一个元素对链表对修改有影响
// // 增加一个哨兵元素
// let ele = {
// next: head
// }
// let cur = ele
// while(cur.next) {
// if(cur.next.val == val) {
// cur.next = cur.next.next
// }else {
// cur = cur.next
// }
// }
// return ele.next
// };
var removeElements = function(head, val) {
const preHead = new ListNode(-1)
preHead.next = head
let p = preHead
while (p && p.next) {
if (p.next.val === val) {
p.next = p.next.next
} else {
p = p.next
}
}
return preHead.next
};
// 使用递归实现
const removeElements = (head, val) => {
if (!head) return null
head.next = removeElements(head.next, val)
return head.val === val ? head.next : head
}