Remove Nth Node From End of List
题意:删除链表中从后往前数第n个元素,保证n有效。要求只链表只能有一次访问。
解法:维护一个大小为n的链表引用的数组。每访问一个元素,将其添加到该数组中,若数组满了,直接把最老的覆盖即可。当遍历到末尾时,那么在数组中对应位置所存的引用就是需要删除的元素的父亲,注意若要删除的元素是第一个元素的话,要单独处理。
public class Solution133 {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode[] temp=new ListNode[n];
int number=0;
if (head==null){
returnnull;
}
if (head.next==null){
return null;
}
ListNode tempNode=head;
while(head.next!=null){
temp[number]=head;
head=head.next;
number=(number+1) % n;
}
if (temp[number]!=null){
temp[number].next=temp[number].next.next;
}else{
tempNode=tempNode.next;
}
return tempNode;
}
}