leetcode 237.刪除鏈表中的節點

剛學完線性表,想出去試一試,結果沒做出來。
思路挺簡單但也挺精妙的。

題目

https://leetcode-cn.com/problems/delete-node-in-a-linked-list/

思路

因爲無法訪問刪除節點之前的節點,所以主要是將刪除的節點複製爲下一個節點,使下一個節點被刪除,即讓刪除節點的next指向下一個節點的下一個節點。相當於把刪除節點的下一個節點搬到了刪除節點的位置。

代碼

C

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
void deleteNode(struct 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->val = node->next->val;
        node->next = node->next->next;
    }
};

Python3

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