在O(1)时间复杂度删除链表节点
2017-03-25 23:03
127 查看
题目:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。
思路:给定一个节点的地值node,想要将它删除,最好的方法就是下一个节点覆盖这个节点,这个节点的信息就不存在了,就相当于删掉了这个节点。如此一来node的下一个节点有了两个一摸一样的节点保存它的信息,在链表的next连接时,实际上不连接的是之前要被删的节点的下一个,但下一个节点的信息已经保存在了这个节点上。
代码:
class Solution {
public:
/**
* @param node: a node in the list should be deleted
* @return: nothing
*/
void deleteNode(ListNode *node) {
// write your code here
node->val=node->next->val;
node->next=node->next->next;
}
感想:这个题很奇妙的一点就是将这个要被删除的节点变成了和它下一个节点一摸一样的节点,不连接的是它的下一个节点但并没有造成信息的丢失。这个代码很简短,但是很奇妙,从中我体会到了链表的美妙之处。
思路:给定一个节点的地值node,想要将它删除,最好的方法就是下一个节点覆盖这个节点,这个节点的信息就不存在了,就相当于删掉了这个节点。如此一来node的下一个节点有了两个一摸一样的节点保存它的信息,在链表的next连接时,实际上不连接的是之前要被删的节点的下一个,但下一个节点的信息已经保存在了这个节点上。
代码:
class Solution {
public:
/**
* @param node: a node in the list should be deleted
* @return: nothing
*/
void deleteNode(ListNode *node) {
// write your code here
node->val=node->next->val;
node->next=node->next->next;
}
感想:这个题很奇妙的一点就是将这个要被删除的节点变成了和它下一个节点一摸一样的节点,不连接的是它的下一个节点但并没有造成信息的丢失。这个代码很简短,但是很奇妙,从中我体会到了链表的美妙之处。
相关文章推荐
- lintcode——在O(1)时间复杂度删除链表节点(链表)
- LintCode解题笔记 - 在O(1)时间复杂度删除链表节点
- lintcode在O(1)时间复杂度删除该链表节点。
- lintcode 在O(1)时间复杂度删除链表节点
- LintCode 在O(1)时间复杂度删除链表节点
- lintcode 容易题:Delete Node in the Middle of Singly Linked List 在O(1)时间复杂度删除链表节点
- lintCode(372)——在O(1)时间复杂度删除链表节点
- 在O(1)时间复杂度删除链表节点
- 在O(1)时间复杂度删除链表节点
- LintCode Delete Node in the Middle of Singly Linked List 在O(1)时间复杂度删除链表节点
- LintCode:在O(1)时间复杂度删除链表节点
- [LintCode] 在O(1)时间复杂度删除链表节点
- Lintcode 372. O(1)时间复杂度删除链表节点
- 【面试题】在O(1)时间复杂度删除链表节点
- 在O(1)时间复杂度删除链表节点(LintCode)
- LintCode-剑指Offer-(372)在O(1)时间复杂度删除链表节点
- 在O(1)时间复杂度删除链表节点
- 在O(1)时间复杂度删除链表节点
- LintCode_372_在O(1)时间复杂度删除链表节点