这是一个快慢指针的问题
//首先创建node节点
class ListNode {
public $val = 0;
public $next = null;
function __construct($val) { $this->val = $val; }
}
function removeNthFromEnd ($head, $n) {
$pre = new ListNode(0); //创建一个头结点
$pre->next = $head;
$fast = $slow = $pre; //创建两个头指针
//生成快指针,形成一个区间为n的区间段
for ($i=0; $i<$n; $i++) {
$fast = $pre->next;
}
//快指针遍历到最后一个节点
while ($fast->next != null) {
$fast = $fast->next;
$slow = $slow->next;
}
//此时慢指针所在的节点就是我们要删除的节点
$slow->next = $slow->next->next;
//返回最新的链表
return $pre->next;
}