給定一個鏈表,刪除鏈表的倒數第 n 個節點,而且返回鏈表的頭結點。node
示例:python
給定一個鏈表: 1->2->3->4->5, 和 n = 2.code
當刪除了倒數第二個節點後,鏈表變爲 1->2->3->5.
說明:rem
給定的 n 保證是有效的。it
進階:io
你能嘗試使用一趟掃描實現嗎?class
# Definition for singly-linked list. class ListNode(object): def __init__(self, x): self.val = x self.next = None class Solution(object): def removeNthFromEnd(self, head, n): def remove(node): if not node: return 0, node i, _ = remove(node.next) # 先返回 if i==n: node.next = node.next.next # 後處理 return i+1, node return remove(head)[1] # 這樣是有問題的, 若是刪除隊首元素會出現問題
應該先處理, 在返回, 即返回已經刪除後以後的頭節點object
class Solution(object): def removeNthFromEnd(self, head, n): def remove(node): if not node: return 0, node i, node.next = remove(node.next) return i+1, (node, node.next)[i+1==n] return remove(head)[1]