设计链表的问题(循环,删除)之类的,都是设一个快指针,一个慢指针
快指针比慢指针快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;
}
}
本文详细介绍了使用快慢指针技术解决链表问题,具体包括删除末尾第n个节点的操作。通过设置快指针比慢指针快n步的方式,巧妙地实现了目标节点的定位与删除,同时特别考虑了边界情况。
635

被折叠的 条评论
为什么被折叠?



