1. 程式人生 > >刪除倒數第K個節點

刪除倒數第K個節點

題目描述
給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。

示例:

給定一個連結串列: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.

思考:
連結串列因為其特殊的結構,在操作連結串列的時候最常見的就是使用多種指標操作,對於這個問題使用兩個指標就可以搞定了,具體的思路如下圖所以,廢話也不多說了,直接看程式碼吧。

image

image

image

   public ListNode removeNthFromEnd(ListNode head, int n) {

        if
(head==null) return null; //表頭節點(假設所有節點都為正數) ListNode preHead = new ListNode(-1); preHead.next=head; ListNode fast=head; ListNode cur=preHead; int temp=0; for(;fast!=null && temp<n;fast=fast.next,temp++); if(temp<n) return
null; //n大於連結串列的長度 for(;fast!=null;fast=fast.next,cur=cur.next); //刪除cur節點的下一個節點 cur.next=cur.next.next; return preHead.next; }