1. 程式人生 > >leetcode 經典面試題之連結串列(19. 刪除連結串列的倒數第N個節點)

leetcode 經典面試題之連結串列(19. 刪除連結串列的倒數第N個節點)

  • 刪除連結串列的倒數第N個節點

給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。
示例:
給定一個連結串列: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.
說明:
給定的 n 保證是有效的。

func removeNthFromEnd(head *ListNode, n int) *ListNode {

	//判斷連結串列是否為空
	if head == nil {
		return nil
	}

	fast :=
head slow := head // head = 1->2->3->4->5->nil n=2 // fast = 3->4->5->nil for i := 0; i < n; i++ { fast = fast.Next } //如果 fast==nil 說明刪除的為連結串列的頭節點 if fast == nil { return head.Next } for fast.Next != nil { fast = fast.Next slow = slow.Next } slow.Next =
slow.Next.Next return head }