【手繪漫畫】圖解LeetCode之刪除鏈表的倒數第N個節點(LeetCode 19題)

在這裏插入圖片描述

圖解LeetCode刷題計劃

1、寫在前面

手繪漫畫系列正式上線!!!“圖解LeetCode刷題計劃” 來了!!!

今天是第十一期,爭取每天一期,最多兩天一期,歡迎大家監督我。。。

我就是個鴿子。。。
在這裏插入圖片描述
開始做鏈表了,昨天發了單鏈表的操作,每日一遍,養成習慣!
在這裏插入圖片描述

2、題目

首先看一下題目,
在這裏插入圖片描述
可能上來你一看,真簡單啊,結果看錯題了,因爲題中說的是倒數第 n 個,傻了吧。

這裏只講一趟掃描實現的過程,即,雙指針做法,好了,廢話少說,開始了。
在這裏插入圖片描述
在這裏插入圖片描述

3、正文

好了,來一起看一下。

首先創建一個虛擬頭結點,和頭結點相連,定義兩個指針。

先讓 firstn 個位置,然後兩個指針開始同時運動,這樣兩個指針的間隔固定爲 n,只要 first 走到尾結點,那麼 second 的下一個位置就是要刪除的節點位置。
在這裏插入圖片描述
刪除節點的操作,比較簡單,指針改變一下就完事了。

最後返回虛擬節點的下一個位置,而不是頭結點,因爲頭結點可能改變,但是虛擬節點一定不變!!!
在這裏插入圖片描述

4、代碼

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        auto fic=new ListNode(0);
        fic->next=head;
        auto first=fic,second=fic;
        while(n--){
            first=first->next;
        }
        while(first->next){
            first=first->next;
            second=second->next;
        }
        second->next=second->next->next;
        return fic->next;
    }
};

在這裏插入圖片描述
在這裏插入圖片描述

如果有幸幫到你,請幫我點個【贊】,給個【關注】!如果能順帶【評論】給個鼓勵,我將不勝感激。

如果想要更多的資源,歡迎關注 @我是管小亮,文字強迫症MAX~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章