题目描述
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
- 示例:
给定一个链表: 1->2->3->4->5, 和 n = 2
当删除了倒数第二个节点后,链表变为 1->2->3->5.
解题思路
- 判断链表是否为空
- 定义一个哑节点,放在链表的头部
- 计算链表的长度,确定倒数第n个节点的位置
- 快指针走lenth -n步,正好在倒数第n+1个节点上,下一个节点就是第n个节点,将其删除。
- 返回链表的头节点
代码
class Solution:
def removeNthFromEnd(self,head,n):
if not head:
return
dummy_node = ListNode(0)# 定义一个哑节点
lenth = 0
dummy_node = head # 将哑节点放在链表头
# 链表的长度
while dummy_node.next:
lenth += 1
dummy_node = dummy_node.next
lenth -= n # 确定倒数第n个节点的位置
first = dummy_node
while lenth > 0:
lenth -= 1
first = first.next
first.next = first.next.next # 删除倒数第n个节点
return dummy_node.next