问题描述: 给你一个链表,删除链表的倒数第n个节点,并且返回链表的头节点。请使用一次遍历解决该问题。
输入描述:
链表 head = [1,2,3,4,5], n = 2
输出描述: 1, 2, 3, 5
输入样例: 1,2 n=1
输出样例: 1
解析:首先需要找到链表的倒数第n个节点,然后删除该节点,最后返回链表的头节点。
代码如下:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def remove_nth_from_end(head, n):
dummy = ListNode(0)
dummy.next = head
first = second = dummy
for i in range(n + 1):
first = first.next
while first:
first = first.next
second = second.next
second.next = second.next.next
return dummy.next
# 测试用例
head = ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5)))))
n = 2
result = remove_nth_from_end(head, n)
while result:
print(result.val, end=" -> ")
result = result.next
输出结果为:1 -> 2 -> 3 -> 5