给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
进阶:你能尝试使用一趟扫描实现吗?

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode rNode=reverseNode(head);
if(n==1){
rNode=rNode.next;
return reverseNode(rNode);
}
int index=1;
ListNode cur=rNode;
while(cur.next!=null){
index++;
if(index==n){
cur.next=cur.next.next;
}else{
cur=cur.next;
}
}
return reverseNode(rNode);
}
public ListNode reverseNode(ListNode head){
ListNode pre=null;
ListNode cur=head;
while(cur!=null){
ListNode next=cur.next;
cur.next=pre;
pre=cur;
cur=next;
}
return pre;
}
}
原文:https://www.cnblogs.com/iwyc/p/15253515.html