用双指针。
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @param n int整型
* @return ListNode类
*/
public ListNode removeNthFromEnd (ListNode head, int n) {
// write code here
ListNode preNode=head;
ListNode postNode=head;
while(n>0&&preNode!=null){
preNode=preNode.next;
n--;
}
if(n>0){
//如果链表长度小于n
return head;
}else if(preNode==null){
//如果链表长度等于n
return head.next;
}
//链表长度大于n
while(preNode.next!=null){
preNode=preNode.next;
postNode=postNode.next;
}
postNode.next=postNode.next.next;
return head;
}
}