- 题意:删除一个单向链表的倒数第 N 个节点
- 直接模拟,先算出节点数,再找到节点删除
- 加一个头结点dummy,并使用双指针p1和p2。p1先向前移动n个节点,然后p1和p2同时移动,当p1.next==None时,此时p2.next指的就是需要删除的节点。
class Solution:
# @return a ListNode
def removeNthFromEnd(self, head, n):
dummy = ListNode(0)
dummy.next = head
p, q = dummy, dummy
# first 'q' go n step
for i in range(n):
q = q.next
# q & p
while q.next:
p = p.next
q = q.next
rec = p.next
p.next = rec.next
del rec
return dummy.next