[lintcode]-链表 在O(1)时间复杂度删除链表节点
来源:互联网 发布:网络语call是什么意思 编辑:程序博客网 时间:2024/05/17 20:33
描述
给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。
样例
Linked list is 1->2->3->4, and given node 3, delete the node in place 1->2->4
思路
需要在O(1)复杂度内删除该节点,已知结点node,普通情况下删除结点需要遍历整个链表,找到其前驱,才能删除结点,但复杂度为o(n), 所以不能用这种方法。我们可以删除该节点的后继,将此结点的后继的值赋给该结点,再将后继结点删除,即可。
代码
/** * 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) { if (node == NULL) { return; } ListNode *tmp = node->next; node->val = node->next->val; node->next = tmp->next; free(tmp); }};
阅读全文
0 0
- LintCode-在O(1)时间复杂度删除链表节点
- lintcode 在O(1)时间复杂度删除链表节点
- LintCode:在O(1)时间复杂度删除链表节点
- LintCode 在O(1)时间复杂度删除链表节点
- 在O(1)时间复杂度删除链表节点-LintCode
- LintCode-在O(1)时间复杂度删除链表节点
- Lintcode 在O(1)时间复杂度删除链表节点
- LintCode 在O(1)时间复杂度删除链表节点
- 在O(1)时间复杂度删除链表节点 -LintCode
- [lintcode]-链表 在O(1)时间复杂度删除链表节点
- LintCode解题笔记 - 在O(1)时间复杂度删除链表节点
- lintcode-在O(1)时间复杂度删除链表节点-327
- 在O(1)时间复杂度删除链表节点(LintCode)
- LintCode-剑指Offer-(372)在O(1)时间复杂度删除链表节点
- lintCode(372)——在O(1)时间复杂度删除链表节点
- lintcode在O(1)时间复杂度删除该链表节点。
- lintcode——在O(1)时间复杂度删除链表节点
- lintcode 372 在o(1)时间复杂度删除链表节点
- 判断当前手机蓝牙是否开启
- 遮罩层显示,框的移动拖拽功能
- 控件缩写大全
- Oracle类型定义
- 数组
- [lintcode]-链表 在O(1)时间复杂度删除链表节点
- 初学网络编程 今天的网络编程作业
- HelloWorld
- 全屏功能_iframe内置框内显示全屏
- 资料收藏
- 指针和引用
- mybaits(2)_使用xml进行增删改查
- 算法---迭代
- java编写9阶乘法表