OJ:lintcode 在O(1)時間復(fù)雜度刪除鏈表節(jié)點

給定一個單鏈表中的一個等待被刪除的節(jié)點(非表頭或表尾)。請在在O(1)時間復(fù)雜度刪除該鏈表節(jié)點。
您在真實的面試中是否遇到過這個題?
Yes
樣例
給定 1->2->3->4,和節(jié)點 3,刪除 3 之后,鏈表應(yīng)該變?yōu)?1->2->4。

/**
 * Definition of ListNode
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *         this->val = val;
 *         this->next = NULL;
 *     }
 * }
 */
 
 /*如果我們把刪除節(jié)點的下一個結(jié)點的值賦值給要刪除的結(jié)點,
 然后刪除這個結(jié)點,這相當(dāng)于刪除了需要刪除的那個結(jié)點。
 因為我們很容易獲取到刪除節(jié)點的下一個節(jié)點,所以復(fù)雜度只需要O(1)
,注意題目要求非表頭或表尾。 */

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

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

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