思路
设置一个快指针,一个慢指针,快指针比慢指针先多走n+1步,这样当快指针指向null的时候,慢指针就是要删除的倒数第N个结点的前一个结点。删除慢指针的下一个结点即可。
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy=new ListNode(-1,head);
ListNode cur=dummy;
ListNode pre=dummy;
for(int i=1;i<=n+1;i++){
cur=cur.next;
}
while(cur!=null){
pre=pre.next;
cur=cur.next;//到链表最后,pre就是指向的要删除元素的前一个元素
}
pre.next=pre.next.next;
return dummy.next;
}
}