Sea una lista de enteros positivos sin un orden particular, y que puede contener duplicados. Escriba un programa o función que genere una lista de enteros positivos M (cuyo orden no es importante) de modo que la fusión de L y M dé como resultado la lista más pequeña que puede dividirse por completo en rangos idénticos de enteros [ 1 .. i ] , donde i es el elemento más grande en L
Ejemplo
Dejar L = [5,3,3,2,7]
. El elemento máximo de L
es 7
. La mayoría de las veces que ocurre un número entero específico es 2
( 3
aparece 2 veces). Por lo tanto, necesitamos generar la lista M
que permitirá completar L
para poder construir 2
rangos de enteros desde 1
hasta 7
.
Por lo tanto, necesitamos salida M = [1,1,2,4,4,5,6,6,7]
, para que cada número entero de 1
a 7
aparezca 2
veces.
Entradas y salidas
- Use cualquier cosa en su idioma que sea similar a las listas. La estructura de datos utilizada para la entrada y la salida debe ser la misma.
- La lista de entrada contendrá solo enteros positivos.
- La lista de entrada no estará vacía.
- No puede asumir que la lista de entrada está ordenada.
- El orden en la lista de salida no es importante.
Casos de prueba
Input Output
[1] []
[7] [1, 2, 3, 4, 5, 6]
[1, 1, 1] []
[1, 8] [2, 3, 4, 5, 6, 7]
[3, 3, 3, 3] [1, 1, 1, 1, 2, 2, 2, 2]
[5, 2, 4, 5, 2] [1, 1, 3, 3, 4]
[5, 2, 4, 5, 5] [1, 1, 1, 2, 2, 3, 3, 3, 4, 4]
[5, 3, 3, 2, 7] [1, 1, 2, 4, 4, 5, 6, 6, 7]
Puntuación
Este es el código de golf , por lo que gana la respuesta más corta en bytes.
i
es el elemento más importante de L
, fue un error tipográfico en las especificaciones.
M=[1,1,2,2,3]
a L=[3]
mientras que "la fusión de L y M resultados en una lista que en su totalidad se puede dividir en rangos de números enteros idénticos [1..i]"?
[1,2]
. Lo aclararé para que quede claro que debería dar como resultado el número mínimo de rangos.
i
el elemento más importante deL
oM
?