1 題目描述
給定一個(gè)鏈表,移除其自末尾起第N個(gè)節(jié)點(diǎn)后返回該鏈表。
例子:
輸入:給定鏈表1->2->3->4->5,且n=2
輸出:移除鏈表末尾起第2個(gè)節(jié)點(diǎn)4后,鏈表變?yōu)?->2->3->5。
題目出處:
https://leetcode.com/problems/remove-nth-node-from-end-of-list/
2 解決思路
兩個(gè)指針初始均指向鏈表頭部,然后讓第一個(gè)指針先走N步;
這時(shí),第二個(gè)指針開(kāi)始與第一個(gè)指針同時(shí)走,當(dāng)?shù)谝粋€(gè)指針到達(dá)尾部節(jié)點(diǎn)時(shí),第二個(gè)指針剛好到達(dá)要移除節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)。
這樣,將第二個(gè)指針的下一個(gè)節(jié)點(diǎn)指向下下個(gè)節(jié)點(diǎn)即為所求。
注:特殊情況為,第一個(gè)指針走了N步時(shí),所指的是尾節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn),即nil,這時(shí)說(shuō)明要移除的節(jié)點(diǎn)是頭節(jié)點(diǎn),該種情況返回頭節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)即可。
3 golang實(shí)現(xiàn)代碼
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
本文作者:磊磊落落的博客,原創(chuàng)授權(quán)發(fā)布