刪除倒數第K個節點
阿新 • • 發佈:2019-01-26
題目描述:
給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。
示例:
給定一個連結串列: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.
思考:
連結串列因為其特殊的結構,在操作連結串列的時候最常見的就是使用多種指標操作,對於這個問題使用兩個指標就可以搞定了,具體的思路如下圖所以,廢話也不多說了,直接看程式碼吧。
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;
}