从列表末尾删除第N个节点,可以通过以下步骤实现:
下面是Python代码实现:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def removeNthFromEnd(head, n):
dummy = ListNode(0) # 创建一个虚拟头节点
dummy.next = head
first = dummy
second = dummy
# 先将第一个指针移动n步
for i in range(n + 1):
first = first.next
# 同时移动两个指针,直到第一个指针到达末尾
while first is not None:
first = first.next
second = second.next
# 删除倒数第N个节点
second.next = second.next.next
return dummy.next
这段代码中,我们创建了一个虚拟头节点dummy,它的next指向原始的头节点head。然后使用双指针法找到倒数第N个节点的前一个节点,最后将其指向倒数第N个节点的下一个节点,实现了删除操作。
这个算法的时间复杂度为O(L),其中L是列表的长度。
领取专属 10元无门槛券
手把手带您无忧上云