Título:
Dada uma lista, delete lista recíproco de n nós, e retorna à lista nó principal.
exemplo:
Dada uma lista de: 1-> 2> 3-> 4-> 5, e n = 2.
Depois de removido quando o nó penúltimo, a lista torna-se 1-> 2-> 3-> 5.
Descrição: para garantir que um determinado n é válido.
Avançado: Use uma passagem percebeu
: Interpretações
a primeira travessia do comprimento da lista novamente para obter a lista, elimine o penúltimo n nós é excluído positivos primeiros LEN-n + 1 nós, delete:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
int len=0;
ListNode temp=new ListNode();
temp=head;
while(temp!=null){
temp=temp.next;
len++;
}
temp=head;
if(len==n) return head.next;//如果删除的是首元素则直接返回第二元素
for(int i=0;i<len-n-1;i++){
temp=temp.next;
}
temp.next=temp.next.next;
return head;
}
}
Ou podemos usar um método de dupla ponteiro travessia para encontrar o elemento que você deseja excluir. O primeiro ponteiro é movido para a frente a partir do início da lista de passo n + 1, e o início da segunda lista a partir do ponteiro de início. Agora, estes dois ponteiros estão separados por n nós. Deixe o intervalo constante mantida movendo simultaneamente ambas as mãos para a frente, até que o primeiro ponteiro atingir o último nó. Neste momento, o segundo ponteiro aponta para o nó de ordem n a partir do último ponto de junção. Nós re-ligação para o segundo nó referenciado pelo ponteiro para o próximo ponteiro para o próximo nó nesse nó.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
int len=0;
ListNode temp1=new ListNode(0);
ListNode temp2=new ListNode(0);
temp1=head;
temp2=head;
while(len!=n){
temp1=temp1.next;
len++;
}
if(temp1==null) return head.next;
while(temp1.next!=null){
temp1=temp1.next;
temp2=temp2.next;
}
temp2.next=temp2.next.next;
return head;
}
}
Na verdade, a fim de reduzir circunstâncias interferência especiais (como apenas um nó, o primeiro nó a ser excluído), podemos usar um manequim como o próximo nó é a ajuda nó principal, nós mudos, veja as idéias específicas oficiais Solução:
Portal