面试题02.03+#237
基础的王道原题,思路如下:
单链表,给定要被删除的节点,如果遍历找到前驱节点再正常删除,时间复杂度为o(n),过于复杂,如果将被删除节点的后继节点的值和当前要被删除的节点的值对调再删除后继节点,则省略掉了遍历找前驱这一操作,节省了时间.
代码如下
struct ListNode*p;
p=node->next; //p记录后继节点位置
node->val=node->next->val; //对调前后节点存储的值
node->next=node->next->next; //连接前驱节点和后继节点的后继节点,方便free掉p
free(p);
浙公网安备 33010602011771号