LeetCode 019 刪除鍊錶的倒數第N個節點

2021-10-25 08:41:55 字數 825 閱讀 4774

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

用兩個指標, 其中乙個先"走", 先走的指標先走n步

然後兩個指標再同時走, 當先走的指標指向最後乙個節點時, 後走的指標指向要刪除的節點的上乙個節點

注意:如果先走的指標走完n步後已經為null, 則說明要刪除的是頭節點

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*/class

solution

listnode ahead = head;

// 先走的指標往後走 n 步

for(

int i =

0; i < n; i++

)// 如果ahead已經是最後乙個節點, 則說明要刪除的是頭節點

if(ahead == null)

// 然後兩個指標一起走, 先走的指標到尾部時, 後走的指標就指向要刪除的節點的上乙個節點

// pre是要刪除節點的上乙個節點

listnode pre = head;

// 讓先走的指標走到最後

while

(ahead.next != null)

// 刪除指定節點

pre.next = pre.next.next;

return head;

}}

LeetCode 019 刪除鍊錶的倒數第N個節點

019 刪除鍊錶的倒數第n個節點 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.方法 雙指標法 思路 定義兩個指標指向頭節點,將第乙個指標移動n個節點,然後兩個一起移動,直到第...

LeetCode 019 刪除鍊錶的倒數第N個節點

這是乙個中等難度的問題在王道考研教材中也有提及,但是時間過得過於久遠,思路已經模糊不清了,這裡設定了乙個頭節點,將刪除首元素以及其他元素的操作統一了起來,使用了雙指標的技巧,解決該問題。definition for singly linked list.class listnode def init...

019 刪除鍊錶的倒數第N個節點

1 使用兩次遍歷 2 listnode removenthfromend listnode head,int n 10 11 p head 12if len n 13return head next 14for int j 0 j len n 1 j 1718 p next p next next ...