一次遍历方法
快慢指针
设置两个指针 安排快的那个指针先走n个,之后慢的指针和快的指针一起走,直到快的指针走到链表尾,这时慢的那个指针正好指向了要删除节点的前一个节点
public static ListNode removeNthFromEnd(ListNode head, int n) {
ListNode fir = head;
ListNode sec = head;
int index = n;
while (index!=0){
fir = fir.next;
index--;
}
if(fir==null){
return head.next;
}
while(fir.next!=null&&sec.next!=null){
fir = fir.next;sec = sec.next;
}
ListNode val = sec.next.next;
sec.next = val;
return head;
}