思路:重新创建两个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;
}
京公网安备 11010502036488号