Dada una matriz indexada a cero ‘A’ = {1, 2, 3, …, n} de ‘n’ enteros, ¿cómo podemos reorganizar los números en ella de modo que para dos números cualquiera a [i] y a [ j] (i <j), su promedio no se encuentra entre i y j?

1 – ordenar la lista
2 – haga dos listas de tal manera que los números en índices impares se inserten en una lista y los números en índices pares se inserten en la otra
3 – repita el paso 2 para las nuevas listas hasta que tenga n listas de 1 elemento cada una
4 – concatena las n listas juntas

p.ej

1,2,3,4,5,6,7,8,9
/ \
1,3,5,7,9 2,4,6,8
/ \ / \
1,5,9 3,7 2,6 4,8
/ \ / \ / \ / \
1,9 5 3 7 2 6 4 8
/ \ \ \ \ \ \ \ \
1 9 5 3 7 2 6 4 8

Esto funciona porque:
a) dada una progresión lineal de números naturales, el promedio de dos números impares consecutivos es siempre par, y del mismo modo, el promedio de dos números pares siempre es impar. Al separar por paridad, garantizamos que no hay dos números consecutivos de la misma paridad separados por el número que representa sus promedios.
b) una progresión de números naturales cuya distancia entre números consecutivos es constante es una función lineal de la progresión de números naturales y puede simbolizarse como uno (es decir, uno puede pensar en ella como una progresión de números tal que solo 1,3,5, 7,9 son números válidos, y donde 1,5,9 son “pares” y 3,7 son “impares”)
c) podemos reducir recursivamente b) a a) para cubrir todos los intervalos

Como sugirió Leo, podemos dividir números alternativos de la lista de forma recursiva para obtener los grupos cuyo promedio se encuentra en el otro.
Código de Python de trabajo para el mismo.

  clase organizarNúmeros ():

     def organizar (auto, N):
         a = rango (1, N + 1)
         return self.arrangeUtil (a, 0, N)

     defrangeUtil (self, l, low, high):
         # lista de retorno de elementos organizados en l
         si bajo 

¿Es posible resolver esto donde los números no están igualmente espaciados?

More Interesting

¿Cuáles son algunas preguntas de codificación formuladas por InMobi?

¿Cuáles son algunas buenas tareas de desarrollo cortas (1–3 horas) para un proceso de solicitud / entrevista de desarrollador JavaScript de nivel medio de entrada?

¿Las entrevistas técnicas para puestos de ingeniería de software a tiempo completo son más difíciles para los estudiantes de posgrado que para los estudiantes de pregrado?

¿Qué debo hacer cuando me quedo atrapado en una entrevista de codificación?

¿Por qué las compañías de software, durante las entrevistas, se preocupan si los candidatos conocen la sintaxis exacta del código?

¿Cómo fue el proceso de entrevista para un puesto de pasantía en ingeniería de software con SoundCloud?

¿Será difícil descifrar la entrevista del desarrollo de Android con solo el conocimiento básico de la estructura de datos y el algoritmo y no más que eso para los principiantes? ¿Las preguntas son demasiado complejas?

¿Los entrevistadores de trabajo de software exageran enormemente la tasa promedio a la que rechazan a los candidatos para aparecer en línea con la imagen de una empresa?

¿Hay una lista de tareas completa que necesito aprender antes de poder escribir 'Conocimiento (puede usar / implementar) de estructuras de datos y algoritmos' en mi currículum?

¿Qué tipo de preguntas se hacen en una entrevista en Google para el rol de ingeniero de software, para un candidato con un año de experiencia laboral?

Dada una matriz arr [0 ... n-1], ¿cómo calculo arr_low [0 ... n-1] eficientemente st arr_low [i] = número de elementos menor o igual que arr [i] en arr [i + 1 ... n-1]?

¿Cuál es su revisión del material C ++ en GeeksforGeeks?

¿Cuáles son algunas preguntas comunes en una entrevista de cuatro grandes?

¿Cuál es la estructura de datos y UX requerida para buscar fácilmente el contenido de Quora? ¿Qué se necesitaría para presentar esto de una manera simple y requerir el tiempo mínimo de lectura?

Tengo una entrevista del Royal Bank of Scotland en una semana para un puesto de desarrollador de Java. ¿Qué preguntas puedo esperar?