/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
// 倒数转换为整数
// 先计算链表长度
ListNode p=head,q=head;
// 记录链表长度
int size=0;
// 求链表长度
while(p!=null){
size++;
p=p.next;
}
// 除去第一个结点的时候
/*
易错点:
下面的
int t=size-n
t代表的是要删除的结点前面有几个结点,
而该链表head没有头结点
故前面有0个结点
要单独拿出来讨论
*/
if(size==n){
return head.next;
}
// 记录删除结点的前一个结点的正数位置
int t=size-n;
int i=1;
// 找要删除的结点的前一个结点
while(i!=t){
q=q.next;
i++;
}
// 删除结点
q.next=q.next.next;
return head;
}
}