您的位置:首页 > 其它

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

2017-03-27 22:57 295 查看
题目描述:.给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。

样例
给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为1->2->4。
解题思路:先赋值后改变地址,先把该节点的下一个结点的数据赋值给该结点,然后再把指针指向下下个结点的地址,完成这两步之后,该结点就被下一结点覆盖了,完成了删除该结点的任务。

关键代码:void deleteNode(ListNode *node) {

                     // write your code here

                     node->val=node->next->val;

                     node->next=node->next->next;}

做题感想:刚开始想参考书上的删除算法写,后来发现了更简洁的算法,更容易理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: