设计链表的问题(循环,删除)之类的,都是设一个快指针,一个慢指针
快指针比慢指针快n步,注意考虑(1,2) 1和(1,2) 2的边界情况
public class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {ListNode pFast=head;
ListNode pSlow=head;
ListNode tmp=null;
int diff=0,isMove=0;
while(pFast.next!=null)
{
pFast=pFast.next;
diff++;
if(diff==n)
isMove=1;
if(diff>n)
pSlow=pSlow.next;
}
if(isMove==0)
{
head=head.next;
return head;
}
else
{
tmp=pSlow.next;
pSlow.next=tmp.next;
}
return head;
}
}