題目思路分別實現兩個函式,分別可以刪除單鏈表和雙鏈表中倒數第k個節點。
兩次遍歷鍊錶,第一遍每移動一步,就讓k值減1;第二遍從頭開始遍歷鍊錶,每移動一步k值加1,加到0就停止遍歷,此時移動到的節點就是要刪除節點的前乙個節點。
**實現
class
node
}class
doublenode
}public
class
removelastkthnode
node cur = head;
while
(cur != null)
if(lastkth ==0)
if(lastkth <0)
cur.next = cur.next.next;
}return head;
}/**
* 雙鏈表
** @param head
* @param lastkth
* @return
*/public doublenode removelastkthdoublenode
(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個節點,另乙個可以刪除雙鏈表中倒數第k個節點。如果鍊錶長度為n,則要時間複雜度達到o n 額外空間複雜度達到o 1 一種方法是設定快慢指標,快指標先走k步,此時慢指標從頭開始走,兩者同時開始走,當快指標走到尾時,慢指標走到倒數第k個節點,刪除當前慢指標的...
在單鏈表和雙鏈表中刪除倒數第K個節點
說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 在單鏈表和雙鏈表中刪除倒數第k個節點 這一題目的c 復現。感謝左程雲老師的支援。題目 分別實現兩個函式,乙個可以刪除單鏈表中倒數第 k 個節點,另乙個可以刪除雙鏈表中倒數第 k 個節點。要求 如果鍊錶長度為 n,時間複雜度達到 o n 額...
鍊錶 在單鏈表和雙鏈表中刪除倒數第K個節點
題目 分別實現兩個函式,乙個可以刪除單鏈表中倒數第k個節點,另乙個可以刪除雙鏈表中倒數第k個節點。要求 如果鍊錶長度為n,時間複雜度達到o n 額外空間複雜度達到o 1 解答 單鏈表 public class node public node removelastkthnode node head,...