题解 | #删除链表的倒数第n个节点#
删除链表的倒数第n个节点
http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6
思路:
1.求链表的长度length
2.如果要删除的时头结点,即length==n,直接返回头结点的下一个结点。
3.若非头结点,则找到待删除结点的父结点,即第length-n-1个。
4.将父结点的子节点指向子结点的子结点。
5.返回head
public ListNode removeNthFromEnd (ListNode head, int n) { // write code here int length=0; ListNode p=head; while(p!=null){ length++; p=p.next; } if(length==n){ return head.next; } ListNode tmp=head; for(int i=0;i<length-n-1;i++){ tmp=tmp.next; } tmp.next=tmp.next.next; return head; }