这里采用 计算链表长度法:
第一次遍历链表,得到链表长度
length。计算要删除节点的正序位置:
length - n + 1。用一个虚拟头节点
dummy来统一处理删除头结点的情况。第二次遍历,将要删除的节点跳过,即让前驱节点指向要删除节点的下一个节点。
解题过程
遍历一次链表,用
length记录节点总数。计算要删除的节点前一个节点的位置,也就是
length - n。使用一个 dummy 节点 指向
head,用tail指针遍历到该位置。直接跳过目标节点:
tail.next = tail.next.next。返回
dummy.next作为新链表头。

1 | # Definition for singly-linked list. |