解题思路:
首先构造一个节点slownode,它的next引用给定链表的头结点的地址。
之后把slownode赋值给fastnode。
将fastnode往前移动n步,
再将fastnode和slownode一起往前移动,直到fastnode移到最后一个位置。
class ListNode(object): def __init__(self, x): self.val = x self.next = None class Solution(object): def removeNthFromEnd(self, head, n): if not head: return head slownode=ListNode(None) slownode.next=head fastnode=slownode for i in range(n): fastnode=fastnode.next while fastnode.next!=None: slownode=slownode.next fastnode=fastnode.next if slownode.next==head: head=head.next else: slownode.next=slownode.next.next return head
代码详解:
首先head=[1,2,3,4,5]
head这个变量引用的是链表头结点的地址。