1 題目描述
給定一個鏈表,移除其自末尾起第N個節點后返回該鏈表。
例子:
輸入:給定鏈表1->2->3->4->5,且n=2
輸出:移除鏈表末尾起第2個節點4后,鏈表變為1->2->3->5。
題目出處:
https://leetcode.com/problems/remove-nth-node-from-end-of-list/
2 解決思路
兩個指針初始均指向鏈表頭部,然后讓第一個指針先走N步;
這時,第二個指針開始與第一個指針同時走,當第一個指針到達尾部節點時,第二個指針剛好到達要移除節點的上一個節點。
這樣,將第二個指針的下一個節點指向下下個節點即為所求。
注:特殊情況為,第一個指針走了N步時,所指的是尾節點的下一個節點,即nil,這時說明要移除的節點是頭節點,該種情況返回頭節點的下一個節點即可。
3 golang實現代碼
https://github.com/olzhy/leetcode/blob/master/19_Remove_Nth_Node_From_End_Of_List/test.go

原文鏈接:https://leileiluoluo.com/posts/leetcode-remove-nth-node-from-end-of-list.html
本文作者:磊磊落落的博客,原創授權發布