Notas título Leetcode Pincel - Oferta "probar la seguridad" preguntas de la entrevista 06-- imprimir la lista de principio a fin

Lista de cabezal de impresión de la cola

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

 

示例 1:

输入:head = [1,3,2]
输出:[2,3,1]

 

限制:

0 <= 链表长度 <= 10000

 

Mis pensamientos:

Para recorrer la lista de principio a fin, el valor de la lista enlazada de nodos en una matriz de un nuevo espacio abierto, a continuación, invertir el orden de la matriz.

C ++ código como sigue:

1  / * *
 2  * Definición de la lista simplemente enlazada.
3  * struct NodoLista {
 4  * int val;
5  * * NodoLista siguiente;
6  * NodoLista (int x): val (x), al lado (NULL) {}
 7  *};
8   * / 
9  clase de soluciones {
 10  pública :
 11      vector < int > reversePrint (NodoLista * cabeza) {
 12          vector < int > lista;
13          NodoLista * p = cabeza;
14          , mientras que (p! = NULL) {
15              list.push_back (p-> Val); // El valor de cada nodo de la lista están presentes en la matriz 
16              P = p-> Siguiente;
 . 17          }
 18 es          int TEMP;
 . 19          para ( int I = 0 ; I <Lista. size () / 2 ; i ++) { // luego terminar invertida matriz 
20 es              TEMP = Lista [I];
 21 es              Lista [I] = Lista [list.size () - 1. - I];
 22 se              Lista [list.size ( ) - . 1 -i] = TEMP;
 23 es          }
 24          de retorno Lista;
 25     }
 26 };

 

Referencias adicionales idea: tanto el uso de la pila.

Método a la recursividad

Ideas de resolución de problemas:

Recursive: Ir al final de la lista, los valores de los nodos se añaden secuencialmente a la lista cuando la parte posterior de manera que puede darse cuenta de la cadena de valor de salida inversa.

 

Python proceso algorítmico:

Fase recursión: cada head.next entrante, a la cabeza == None (es decir, a través de la lista de nodos de la cola) condición de terminación recursiva, cuando una lista vacía [].
etapas de rastreo: utilizando las características del lenguaje Python, cada vez que el nodo actual devuelve el valor actual de + lista [head.val] backtracking recursión, nodo de salida inversa se pueden realizar.


Java proceso algorítmico:

Fase recursión: cada head.next entrante, a la cabeza == null (es decir, a través de la lista de nodos de la cola) recursiva condición de terminación, a continuación, volver directamente.
TraceBack etapas: de nuevo capas cuando se añade el valor del nodo actual a la lista, es decir tmp.add (head.val).
Finalmente, la lista se convierte en una res array tmp, y volver a.


análisis de complejidad:

La complejidad de tiempo de O (N): Traverse la lista veces recursivas N.
complejidad espacial O (N): El sistema requiere el uso de un espacio de pila O recursiva (N).

 

Método dos: Auxiliar Pila método

Ideas de resolución de problemas:

Lista de características: de adelante hacia atrás sólo se puede acceder a cada nodo.
requisitos de Temas: valor de nodo de salida inversa.
Esta primera en los últimos requisitos de salida puede ser implementado por la pila.

proceso algorítmico:

Pila: recorrido de la lista, cada nodo empujará los valores en la pila. (Python utilizando el método append (), el método ayuda Java LinkedList de addLast ()).
Stack: cada nodo se abrirá el valor de la pila almacenada en la matriz y devuelve. (Python pila retorno directo en el orden inverso de la lista, Java para crear una nueva matriz, método por el popLast () de los elementos en una matriz, para lograr salida inversa).


análisis de complejidad:

El tiempo de complejidad de O (N): co empujado y hecho estallar usando el tiempo O (N).
complejidad espacial O (N): la pila auxiliar y arrays pila se utilizaron res espacio O extra (N) es.

Supongo que te gusta

Origin www.cnblogs.com/Weems/p/12627456.html
Recomendado
Clasificación