一、問題描述
給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。樣例
給出鍊錶1->2->3->4->5->null
和 n = 2.
刪除倒數第二個節點之後,這個鍊錶將變成1->2->3->5->null.
二、解題思路
運用兩個指標,front和behind,乙個先遍歷鍊錶,讓front指標先走n步,然後front和behind再一起走,直到front->next=null,此時behind指標指向的節點的下乙個即使要刪除的節點,然後利用behind->next=behind
->next
->next,即可刪除我們要刪除的節點。
三、我的**
class solution
listnode *behind=q;
while(front->next!=null)
behind->next=behind->next->next;
return q->next;}};
四、我的感想
這個題目前發現有兩種方法,第二種則是先全部遍歷一遍鍊錶,並用count計數,則count-n+1所在的節點即是我們要刪除的節點,這道題也思考了很久,覺得還是一前一後指標的做法比較容易程式設計,在這過程中也犯了不少錯誤,也大大開啟了自己的腦洞,很開心,也越來越喜歡寫部落格了。
刪除鍊錶中倒數第n個節點
刪除鍊錶中倒數第n個節點 給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。樣例 給出鍊錶1 2 3 4 5 null 和 n 2.刪除倒數第二個節點之後,這個鍊錶將變成1 2 3 5 null.definition for listnode.public class listnode pu...
刪除鍊錶中倒數第n個節點
給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。注意事項 鍊錶中的節點個數大於等於n 樣例 給出鍊錶1 2 3 4 5 null和 n 2.刪除倒數第二個節點之後,這個鍊錶將變成1 2 3 5 null.定義兩個指標,slow fast fast先先前走n步後 slow和fast一起走,直...
刪除鍊錶中倒數第n個節點
給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。注意事項 鍊錶中的節點個數大於等於n 樣例 給出鍊錶1 2 3 4 5 null和 n 2.刪除倒數第二個節點之後,這個鍊錶將變成1 2 3 5 null.挑戰 o n 時間複雜度 如果先遍歷鍊錶,得出鍊錶結點個數,然後再第二次遍歷找出倒數第...