原题
Remove all elements from a linked list of integers that have value val.
Example:
Input: 1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5
解法
定义一个虚拟节点dummy, 遍历链表, 如果当前指针的下一个节点的值是val, 那么越过下一个节点, 直到下一个节点的值不是val为止, 然后p向前走一步.
Time: O(n)
Space: O(1)
代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeElements(self, head: 'ListNode', val: 'int') -> 'ListNode':
dummy = p = ListNode(0)
dummy.next = head
while p.next:
if p.next.val == val:
p.next = p.next.next
else:
p = p.next
return dummy.next