倒数第n个节点其实就是顺数第 count-n+1 个节点,但是我们要删除这个节点就先要走到 第 count-n 个节点上去,p.next=p.next.next 就成功了。但是要注意的时候有可能 n == count 也就是说要删除链表头节点的时候要注意
public ListNode removeNthFromEnd (ListNode head, int n) { // write code here if(head==null){ return null; } ListNode p=head; int count=0; while(p!=null){//先遍历一遍找到链表节点数 p=p.next; count++; } int k=count-n;//计算我们要找的第 count-n 个节点 ListNode p1=new ListNode(0);//整个节点出来 p1.next=head; ListNode p2=p1;//记住假节点的引用 while(k>0){//找到第 count-n 个节点 p1=p1.next; k--; } p1.next=p1.next.next;//断开 return p2.next;//返回假节点的 next }