给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
//考虑倒数第n个是第一个结点,为了能够有返回,再加一个头。
ListNode demp = new ListNode(0);
demp.next = head;
ListNode p1 = demp;
ListNode p2 = demp;
//fast指针走n+1步
for(int i=1;i<=n+1;i++){
p1=p1.next;
}
//fast指针走到null结点
while(p1!=null){
p2=p2.next;
p1=p1.next;
}
p2.next=p2.next.next;
return demp.next;
}
}