一、题意
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
二、代码实现
/**
* Definition for a singly-linked list.
* class ListNode {
* public $val = 0;
* public $next = null;
* function __construct($val) { $this->val = $val; }
* }
*/
class Solution {
/**
* @param ListNode $head
* @param Integer $n
* @return ListNode
*/
function removeNthFromEnd($head, $n) {
$dummy = new ListNode(0);
$dummy->next = $head;
$slow = $dummy;
$first = $dummy;
for ($i = 0; $i <= $n; $i++) {
$first = $first->next;
}
while($first) {
$slow = $slow->next;
$first = $first->next;
}
$slow->next = $slow->next->next;
return $dummy->next;
}
}
还不快抢沙发