1. 程式人生 > >作業3.372:在O(1)時間複雜度刪除連結串列節點

作業3.372:在O(1)時間複雜度刪除連結串列節點

題目:在O(1)時間複雜度刪除連結串列節點

樣例:給定1->2->3->4,和節點3,刪除3之後,連結串列應該變為1->2->4。

思路:將要刪除的節點的下一個節點的屬性複製到要刪除的節點上,會出現兩個屬性完全相同的節點,然後把下一個節點刪除即可。

程式碼:

class Solution {
public:
    /**
     * @param node: a node in the list should be deleted
     * @return: nothing
     */
    void deleteNode(ListNode *node) {
        node->val = node->next->val;
        node->next = node->next->next;
    }
};


感想:這個題還是比較簡單的,要在O(1)時間複雜度內完成刪除,連結串列和要刪除的節點都已知,所以操作起來比較簡單,按照思路做一步複製然後刪除一個重複的節點即可。