【題目】
分別實現兩個函式,乙個可以刪除單鏈表中倒數第k個節點,另乙個可以刪除雙鏈表中倒數第k個節點。
【要求】
如果鍊錶長度為n,時間複雜度達到o(n),額外空間複雜度達到o(1)。
【解答】
單鏈表:
public class node
}public node removelastkthnode(node head,int lastkth)
node cur = head;
while(cur!=null)
if (lastkth == 0)
if(lastkth < 0)
cur.next = cur.next.next;
} return head;
}
對於雙鏈表的調整,幾乎與單鏈表的處理方式一樣,注意last指標的重連即可。
public class doublenode
}public doublenode removelastkthnode(doublenode head,int lastkth)
doublenode cur = head;
while(cur != null)
if(lastkth == 0)
if(lastkth < 0)
doublenode newnext = cur.next.next;
cur.next = newnext;
if(newnext != null)
} return head;
}
鍊錶問題 在單鏈表和雙鏈表中刪除倒數第K個節點
題目 在單鏈表和雙鏈表中刪除倒數第k個節點。要求時間複雜度o n 空間複雜度o 1 基本思路 方法一。從煉表頭開始走到尾,每移動一步,k減1。移動完之後,如果k 0,說明鍊錶長度不夠k,根本就沒有倒數第k個值,返回頭節點 head 如果k 0,說明鍊錶的長度等於k,頭節點就是倒數第k個節點,返回 h...
在單鏈表和雙鏈表中刪除倒數第K個節點
分別實現兩個函式,乙個可以刪除單鏈表中倒數第k個節點,另乙個可以刪除雙鏈表中倒數第k個節點。如果鍊錶長度為n,則要時間複雜度達到o n 額外空間複雜度達到o 1 一種方法是設定快慢指標,快指標先走k步,此時慢指標從頭開始走,兩者同時開始走,當快指標走到尾時,慢指標走到倒數第k個節點,刪除當前慢指標的...
在單鏈表和雙鏈表中刪除倒數第K個節點
說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 在單鏈表和雙鏈表中刪除倒數第k個節點 這一題目的c 復現。感謝左程雲老師的支援。題目 分別實現兩個函式,乙個可以刪除單鏈表中倒數第 k 個節點,另乙個可以刪除雙鏈表中倒數第 k 個節點。要求 如果鍊錶長度為 n,時間複雜度達到 o n 額...