騰訊面試題!!!【手繪漫畫】圖解LeetCode之刪除鏈表中的節點(LeetCode 237題)

在這裏插入圖片描述

圖解LeetCode刷題計劃

1、寫在前面

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

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

我就是個鴿子。。。
在這裏插入圖片描述
今天的這個題是騰訊面試出過的題,有點動腦筋的意思!
在這裏插入圖片描述
在這裏插入圖片描述

2、題目

首先看一下題目,
在這裏插入圖片描述
在這裏插入圖片描述
可能上來你一看,題出錯了???
在這裏插入圖片描述
彆着急,認真看題!

void deleteNode(ListNode* node)

傳入的是刪除的節點,不是頭結點,加上是單鏈表,沒法找到前驅節點,常規方法無效。

但是我們可以將下一個節點的值複製到當前節點,然後將下一個節點刪除即可。

好了,廢話少說,開始了。
在這裏插入圖片描述
在這裏插入圖片描述

3、正文

好了,來一起看一下。

鏈表是 4, 5, 1, 3,想除去的節點是 5,常規操作,先 get 然後 delete,這樣就OK了。不過就像前面說過的一樣,傳入的是 node,所以這裏用的方法是用要刪除節點的下一個位置,去替代要刪除的節點,這樣就完美的解決了問題!
在這裏插入圖片描述
在這裏插入圖片描述

4、代碼

兩種寫法,一種是常規的,一種是C++特有的!

常規的:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    void deleteNode(ListNode* node) {
        node->val=node->next->val;
        node->next=node->next->next;
    }
};

C++特有的:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    void deleteNode(ListNode* node) {
        *(node)=*(node->next);
    }
};

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

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

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

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