题目描述:.给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在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;}
做题感想:刚开始想参考书上的删除算法写,后来发现了更简洁的算法,更容易理解。