思路:
双指针法,定义一个快指针先跑n步,慢指针开始跑,当快指针跑到最后一个元素的时候,慢指针下一个结点就是要删除的结点
代码:
代码语言:javascript复制class Solution {
//输入:head = [1,2,3,4,5], n = 2
//输出:[1,2,3,5]
public ListNode removeNthFromEnd(ListNode head, int n) {
//预设指针
ListNode pre=new ListNode(0,head);
ListNode last=pre;
ListNode first=pre;
//快指针先走n步
while (first.next!=null){
first=first.next;
if (n==0){
last=last.next;
}else {
n--;
}
}
last.next=last.next.next;
return pre.next;
}
}