Dado un puntero a cualquier nodo, ¿cuál es el número óptimo de nodos que necesita atravesar para encontrar el orden de clasificación en una lista ordenada de forma circular?

Asuma el tamaño de la lista como N ( solo por el bien de la explicación ) . Atravesar 3 nodos es suficiente. 2 no es suficiente debido al Caso 2 y el Caso 3 explicados a continuación.

Deje que los 3 elementos recorridos son a, by c.

Caso 1: punteros dados apuntan a uno de los primeros elementos N – 2 en el orden ordenado. Entonces los 3 elementos estarán en el orden original ordenado . Si a <b <c, el orden ordenado es ascendente ( no decreciente ), de lo contrario es descendente ( no aumenta ) .

Caso 2: punteros dados apuntan al último elemento en el orden ordenado. Luego, los dos últimos elementos de los 3 elementos recorridos estarán en el orden ordenado original . Si b <c, el orden ordenado es ascendente ( no decreciente ) , de lo contrario es descendente ( no aumenta ) .

Caso 3: los puntos de puntero dados al último pero un elemento en el orden ordenado. Luego, los dos primeros elementos de los 3 elementos recorridos estarán en el orden ordenado original . Si a <b, el orden ordenado es ascendente ( no decreciente ) , de lo contrario es descendente ( no aumenta ) .

Pero, la pregunta es ¿cómo descubrimos a dónde apunta el puntero? (al último elemento o al último pero uno o ninguno de estos dos).

Paso 1: Si a <b b> c, el puntero apunta a uno de los primeros N – 2 elementos. Si no, vaya al paso 2

Paso 2: si a> b <c <a o a c> a, el puntero apunta al último elemento. Si no, vaya al paso 3.

Paso 3 : si a c b a, el puntero apunta al último elemento pero a uno

Nota: Esta explicación es para la lista que no contiene duplicados, pero es trivial expandirla para la lista con elementos duplicados también. En lugar de atravesar 3 elementos, atraviese hasta obtener 3 elementos distintos .

More Interesting

¿Dónde puedo encontrar recursos adecuados para las preguntas de diseño del sistema formuladas en entrevistas?

Estoy escribiendo un programa para crear un árbol de búsqueda binario y mostrar datos ordenados. ¿Cómo puedo hacer eso en la programación en C fácilmente me da el código completo?

¿Hay alguna reunión en línea para codificar la preparación de la entrevista?

Entrevistas técnicas: ¿Cómo es la entrevista de aprendizaje automático en Uber?

¿Cuáles son algunas buenas preguntas para la entrevista de JavaScript?

¿Cuáles son las diferencias entre las versiones de Python 2.4 y 2.7?

¿Cómo cambiaría los elementos (en su lugar) de una matriz como [A1, A2, A3, A4, B1, B2, B3, B4] para convertirlo en [A1, B1, A2, B2, A3, B3, A4, B4 ]?

¿Cuáles son algunas preguntas básicas sobre el lenguaje de programación C formuladas en la mayoría de las entrevistas?

¿Cuáles son algunas de las últimas preguntas de la entrevista de programación de Google?

¿Olvidé la pregunta de programación que aprendí o resolví de recursos como Cracking the Coding Interview book? Como recordar

¿Puede la confianza eclipsar el conocimiento en una entrevista?

¿Es un gran inconveniente si tu inglés es torpe en las entrevistas tecnológicas (informática)?

Si menciona en su currículum que tiene un nivel principiante de competencia en un lenguaje de programación en particular, ¿cuánto se espera que sepa?

¿Cuáles son las preguntas más comunes que se hacen en las entrevistas para IAS?

¿Cuál es la diferencia entre la edición estándar y la edición india de Cracking the Coding Interview, 2011, sexta edición?