给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
进阶:你能尝试使用一趟扫描实现吗?
示例 1:
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
提示:
- 链表中结点的数目为 sz
- 1 <= sz <= 30
- 0 <= Node.val <= 100
- 1 <= n <= sz
```javascript
/**
- Definition for singly-linked list.
- function ListNode(val, next) {
- this.val = (val===undefined ? 0 : val)
- this.next = (next===undefined ? null : next)
- } / /*
- @param {ListNode} head
- @param {number} n
- @return {ListNode}
*/
var removeNthFromEnd = function(head, n) {
let pre = head;
let last = length(head) - n;
//如果last等于0表示删除的是头结点
if (last == 0)
//这里首先要找到要删除链表的前一个结点 for (let i = 0; i < last - 1; i++) {return head.next;
} //然后让前一个结点的next指向要删除节点的next pre.next = pre.next.next; return head; }pre = pre.next;
//求链表的长度 var length = function(head) { let len = 0; while (head != null) { len++; head = head.next; } return len; } ```