Título Descripción
Dada una lista, lista de eliminación el nodo principal devuelve la lista penúltima n nodos y.
Ejemplo:
Dada una lista: 1-> 2-> 3-> 4-> 5, y n = 2.
Después de quitar cuando el nodo penúltima, la lista se convierte en 1-> 2-> 3-> 5.
Descripción:
n dado la garantía de ser válida.
Avanzado:
Usted puede tratar de utilizar un solo paso para lograrlo?
Solución: Los indicadores de velocidad (C ++)
Podemos suponer que el conjunto de la aguja doble p y q, entonces, cuando el número de elementos espaciados entre el final del punto q NULL, p y q es n, luego se retira el siguiente puntero P se completa requisitos.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode *dummyhead = new ListNode(0);
dummyhead->next = head;
ListNode *p = dummyhead, *q = dummyhead;
for(int i = 0;i<n+1;i++)
{
q = q->next;
}
while(q)
{
p = p->next;
q = q->next;
}
ListNode *delnode = p->next;
p->next = delnode->next;
delete delnode;
return dummyhead->next;
}
};