原题
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
本文介绍了一种从链表中移除特定值元素的高效算法。通过使用虚拟节点简化边界条件,遍历链表并跳过目标值,实现O(n)时间复杂度和O(1)空间复杂度。
7133

被折叠的 条评论
为什么被折叠?



