移除链表的倒数第N个节点
快慢指针,注意细节
public class Solution{
public ListNode removeFromEnd(ListNode head,int n){
ListNode dummy=new ListNode(0);
dummy.next=head;
ListNode fast=dummy;
ListNode slow=dummy;
for(int i=0;i<n;i++){
fast=fast.next;
if(fast==null) return null;
}
//fast.next相当细节,少循环一次,定位到要被删除节点的前一个节点
while(fast.next!=null){
fast=fast.next;
slow=slow.next;
}
//移除
slow.next=slow.next.next;
return dumy.next;
}
}