1.题目
编写一个函数来删除单链表中的节点(尾部除外),只允许访问该节点。
示例 :
Input: head = [4,5,1,9], node = 5 Output: [4,1,9]
2.思路
只需的时间复杂度可以删除该节点,步骤如下:
- 令该节点的值为下一个节点的值;
- 该节点指向下一个节点的next位置。
- 把下一个节点删除。
例如 i->j 删除节点i
1)把j的内容复制到i
2)i指向j的下一个节点
3)删除节点j
3.实现
class Solution {
public:
void deleteNode(ListNode* node) {
ListNode* nex = node->next;
node->val = nex->val;
node->next = nex->next;
delete nex; //撤销内存空间
}
};