题解 | #删除链表的倒数第n个节点#
删除链表的倒数第n个节点
http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6
思路:重新创建两个ListNode实例来指向head作计算长度和删除的操作,尽量少的直接用head操作。
这里需要考虑的问题:
1.当倒数第n个节点是链表的第一个节点,那么就没有del.next=del.next.next了,因为删除第一个节点只需要返回head.next即第一个节点之后的即可。
2.循环应该从i=1开始,且判断的是i是否等于size-n(长度-n)即是否到达删除的节点
import java.util.*; public ListNode removeNthFromEnd (ListNode head, int n) { ListNode del=head; //作删除使用 ListNode headSize=head; //作计算长度使用 int size=0; while(headSize!=null){ size++; headSize=headSize.next; } if(size==n) { return head.next; } int i=1; while(i!=size-n){ i++; del=del.next; } del.next=del.next.next; return head; }