链表 19.删除链表的倒数第 n个节点
力扣 第19题:给定一个链表,删除链表的倒数第 n个节点,并且返回链表的头结点。
示例: 给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:给定的 n 保证是有效的。
//Definition for singly - linked list.
function ListNode(val) {
this.val = val;
this.next = null;
}
var removeNthFromEnd = function (head, n) {
// 在当前指针前面加一项
var fake = new ListNode(0);
fake.next = head;
var length = 0;
var current = head;
// 得到长度 - 从 head 开始遍历原链表
while (current != null) {
length++;
current = current.next;
}
// length-n 后正好是要删除的那个
length = length - n;
var current = fake;
// length-n-1 后正好是要删除的那个的前一个
while (length > 0) {
length--;
current = current.next
}
// 链表中的删除,只要把前一个指针,跳过当前项,指向下一个即可
current.next = current.next.next;
return fake.next
};