📅  最后修改于: 2023-12-03 15:22:44.425000             🧑  作者: Mango
在链表中删除指定值的节点是一个经典问题。具体来说,我们需要通过遍历链表找到所有包含给定值的节点,并将其从链表中删除。
我们可以使用两个指针:一个指针用于遍历整个链表,另一个指针用于指向需要删除的节点的前一个节点。
具体思路如下:
参考代码如下:
def removeElements(head, val):
# 创建哑节点
dummy = ListNode(-1)
dummy.next = head
# 初始化指针
p, prev = head, dummy
# 遍历整个链表
while p:
# 删除节点
if p.val == val:
prev.next = p.next
else:
prev = p
p = p.next
# 返回头节点
return dummy.next
时间复杂度为 O(n),其中 n 表示链表的长度。需要遍历整个链表。
由于只需要使用常数级别的额外空间,因此空间复杂度为 O(1)。
删除链表中所有出现的给定键是链表中比较经典的问题之一,面试中经常会涉及。掌握这个问题的解法可以大大提高面试的通过率。