203. 移除链表元素
题目来源: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 输出:[]
/** * 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) { let cur = head; let prev = null; while(cur != null){ if(cur.val === val){ if(prev === null){ head = head.next; }else{ prev.next = cur.next; } }else{ prev = cur; } cur = cur.next; } return head; };
Python3
# Definition for singly-linked list. class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solution: def removeElements(self, head: ListNode, val: int) -> ListNode: if head is None: return head head.next = self.removeElements(head.next, val) if head.val == val: headNew = head.next else: headNew = head return headNew class Solution: def removeElements(self, head: ListNode, val: int) -> ListNode: cur = head pre = None while cur is not None: if cur.val == val: if pre is None: head = head.next else: pre.next = cur.next else: pre = cur cur = cur.next return head
提示:
- 列表中的节点数目在范围
[0, 104]
内 1 <= Node.val <= 50
0 <= val <= 50