雙指標 快慢指標 19 刪除鍊錶倒數第N個元素

2021-10-06 19:26:07 字數 945 閱讀 5997

給定乙個鍊錶,刪除鍊錶的倒數第n個節點,並且返回頭結點

兩次遍歷:首先第一次遍歷的得到長度。

第二次遍歷時,因為刪除節點需要有被刪除節點的前乙個節點。考慮到只有乙個節點、兩個節點的情況這種極端情況。需要定義乙個head前指標

listnode p1 = head;

int len=0;

while

(p1!=null)

int rem = len-n;

/*因為刪除節點需要有被刪除節點的前乙個節點。

考慮到只有乙個節點、兩個節點的情況

需要定義乙個head前指標

* */

listnode prehead =

newlistnode(0

);prehead.next = head;

listnode curhead = prehead;

while

(rem!=0)

curhead.next = curhead.next.next;

return prehead.next;

一次遍歷。使用兩個指標。先讓快指標走一定距離,然後和慢指標一起走,當快指標到達結尾null時慢指標正好的到達被刪除結點 的pre。

listnode prehead =

newlistnode(0

);prehead.next = head;

listnode first = prehead;

listnode second = prehead;

for(

int i=

1;i<=n+

1;i++

)while

(first!=null)

second.next = second.next.next;

return prehead.next;

19 刪除鍊錶的倒數第N個節點(快慢指標)

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?讓快指標先走n步,然後快慢指標一起走,這樣兩個指標始終儲存n步的...

專題 鍊錶雙指標問題(快慢指標 相遇指標)

雙指標 分別指向兩個鍊錶,每個鍊錶各自乙個指標 快慢指標 指向同乙個鍊錶,一前一後,前進速度不同 相遇指標 指向同乙個有環鏈表,一前一後,前進速度不同 面試題22.鍊錶中倒數第k個節點 definition for singly linked list.public class listnode c...

快慢指標 雙指標

雙指標 二 左右指標的常用演算法 鏈結 利用快慢指標 最開始slow與fast指標都指向鍊錶第乙個節點,前者解決主要解決鍊錶中的問題,listnode detectcycle listnode head slow head while slow fast return slow 設相遇點距環的起點的...