描述 给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针 例如,给出的链表为: 1\to 2\to 3\to 4\to 51→2→3→4→5, n= 2n=2. 删除了链表的倒数第 nn 个节点之后,链表变为1\to 2\to 3\to 51→2→3→5. 数据范围: 链表长度 0\le n \le 10000≤n≤1000,链表中任意节点的值满足 0 \le val \le 1000≤val≤100 要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n) 备注:题目保证 nn 一定是有效的
import java.util.*;
public class Solution {
public ListNode removeNthFromEnd (ListNode head, int n) {
if(n==1&&head.next==null){
return null;
}
ListNode p=head;
ListNode q=head;
int count=0;
while(count<n){
q=q.next;
count++;
}
if(q==null){
head=head.next;
return head;
}
while(q.next!=null){
q=q.next;
p=p.next;
}
p.next=p.next.next;
return head;
}
}