用兩個指標,先開啟間隔n,然後一起往後移動,這樣就不用遍歷兩次了
中間做題過程**現的問題在於沒想到這個head節點是乙個存有資料的節點,這使得我在除錯過程中總是出現空指標的情況。
因此我自己設定乙個虛指標(其實是看了下題解才領悟過來),指向第乙個資料,然後再開始跑
/**
* definition for singly-linked list.
* struct listnode
* listnode(int x) : val(x), next(nullptr) {}
* listnode(int x, listnode *next) : val(x), next(next) {}
* };
*/class
solution
//同時往後遍歷
while
(pright-
>next !=
null
)//儲存一下要刪除的節點資訊
listnode* delnode=pleft-
>next;
//left指向的倒數n+1個節點
pleft-
>next = pleft-
>next-
>next;
//**刪除節點的記憶體
delete delnode;
//返回頭
listnode* ret=dummyhead-
>next;
delete dummyhead;
return ret;}}
;
19 刪除鍊錶的倒數第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?說實話,就我的水平而言感覺這道題坑點還真不少,先來我的乙個粗糙版...
19 刪除鍊錶的倒數第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?class solution def removenthfrom...
19 刪除鍊錶的倒數第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第n個節點,並且返回鍊錶的頭結點。給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.給定的n保證是有效的。首先遍歷得出鍊錶的長度l,然後刪除第l n個節點 definition for singly linked list....