题解 | #删除链表的倒数第n个节点#
删除链表的倒数第n个节点
http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * * @param head ListNode类 * @param n int整型 * @return ListNode类 */ function removeNthFromEnd( head , n ) { // write code here // n=n+1 var cur = head var fast = head // 快指针相差k个 while(n>0){ fast=fast.next n-- } //删除个数等于链表长度的情况//即啥删除第一个数//fast==null if(!fast) return head.next // 快指针走到头的时候, 慢指针就是当前到倒数第n个节点 while(fast.next){ cur=cur.next fast=fast.next } cur.next = cur.next.next return head } module.exports = { removeNthFromEnd : removeNthFromEnd }; 本题与上一个题返回后K个节点类似, 只是多了一个删除的操作. 删除: cur.next=cur.next.next 需要注意处理n=链表长度的情况 if(fast===null)return head.next