您的位置:首页 > 其它

在O(1)时间复杂度删除链表节点

2017-03-26 19:43 204 查看
给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。

思路:从链表的第一个元素开始查找,找到特定值元素的节点,将它删除。

代码:/**

 * Definition of ListNode

 * class ListNode {

 * public:

 *     int val;

 *     ListNode *next;

 *     ListNode(int val) {

 *         this->val = val;

 *         this->next = NULL;

 *     }

 * }

 */

class Solution {

public:

    /**

     * @param node: a node in the list should be deleted

     * @return: nothing

     */

    void deleteNode(ListNode *node) {

        // write your code here

       if (node->next== NULL) {

           node=NULL;

      }

      if (node->next!= NULL) {

           node->val=(node->next)->val;

          node->next= (node->next)->next;

     }

    }

};

做题感想:此题之中只有一个指针变量,刚开始的时候移动指针变量到指定值的时候老是出错,后来才发现可以这样写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: