题目
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
分析:
跟昨天刷的题思路一样,采用双指针的方法让指针一先走n步,走完n步在让两个指针齐头并进,当先走的指针走到了终点,也就是条件为指针一指向的节点为空的时候,此时第二个指针已经指向了倒数n-1个,为什么是倒数第n-1个而不是倒数第n个呢,自己用以四个节点的链表简单演示一下就可以了,在让第二个指针当前的下一个节点指向指向下下个节点就ok拉。
代码:
class Solution(object):
def removeNthFromEnd(self, head, n):
"""
:type head: ListNode
:type n: int
:rtype: ListNode
"""
h = ListNode(0)
h.next = head
p1 = p2 = h
if head:
for i in range(0,n):
p2 = head.next
head = head.next
while p2:
p1 = p1.next
p2 = p2.next
p1.next = p1.next.next
return h.next