题面
题解
由于是单链表,我们不能找到其前驱节点,然后将前驱节点的指针指向当前节点的next 指针, 但是,我们可以将当前节点的下一个节点的值复制给当前节点,(然后删除下一个节点),覆盖了当前节点,就相当于删除,O(1)
代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node) {
auto p = node->next;
node->next = p->next;
node->val = p->val;
//删除节点p
//delete p;
}
};