leetcode remove nth node from end of list

這個題!!我覺得好熟悉!!應(yīng)該是在編程之美上見過!

題目要求:給定單鏈表L和n n表示需要刪掉的倒數(shù)第n個節(jié)點

思路:最開始蹦上腦子的就是 遍歷->得節(jié)點數(shù)->再遍歷max-n個節(jié)點->刪除

然后題目要求是最好一次遍歷 突然想到了用快慢指針 兩指針之間相差n個節(jié)點 當(dāng)fast->next指針指到NULL時 慢指針也就指向了倒數(shù)第n+1個節(jié)點 方便刪除倒數(shù)第n個節(jié)點

這里首先需要注意一下當(dāng)鏈表只有一個元素并且需要刪除倒數(shù)第一個節(jié)點時 fast會指向NULL 再判斷fast->next會出現(xiàn)runtime error 所以需要遍歷條件需要時while(fast && fast->next) 同時在這種情況下slow的值就是頭指針 如果按照平常情況下的處理 slow->next = slow->next->next 的話 等式左邊就已經(jīng)是NULL了 所以對于刪除節(jié)點也要特殊處理 這種情況下 直接將頭節(jié)點往后挪一個就可以了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容