删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
方法一:需要两次遍历
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
"""
head:是一个头结点
"""
if head.next == None: # 判断链表是否为空或者只有一个节点
head = None
return head
tump = head
length = 0
while tump != None: # 第一次遍历,的处链表的长度length
tump = tump.next
length += 1
tump = head
if length == n: # 判断删除的是否为第一个节点
head = head.next # 如果删除第一个节点,就将head指向第二个节点
return head
for i in range(length - n - 1): # 得到第n-1个节点
tump = tump.next
tump.next = tump.next.next # 将第n-1个节点指向第n+1个节点,即删除了第n个节点
return head
本文探讨如何删除链表的倒数第N个节点,提供了一个示例,如将链表1->2->3->4->5中删除倒数第二个节点后,得到1->2->3->5。题目保证了N的有效性,并提出了进阶挑战,即一次遍历实现该操作。
596

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



