Sia un elenco di numeri interi positivi senza ordinamento particolare e che può contenere duplicati. Scrivi un programma o una funzione che emetta un elenco di numeri interi positivi M (il cui ordinamento non è importante) in modo tale che la fusione di L e risulti nell'elenco più piccolo che può essere completamente suddiviso in intervalli identici di numeri interi , dove è il elemento più grande in[ 1 .. i ]
Esempio
Let L = [5,3,3,2,7]
. L'elemento massimo di L
è 7
. Il maggior numero di volte in cui si verifica un numero intero specifico è 2
( 3
appare 2 volte). Pertanto, è necessario generare l'elenco M
che consentirà di completarlo in L
modo da poter costruire 2
intervalli di numeri interi da 1
a 7
.
Pertanto, è necessario eseguire l'output M = [1,1,2,4,4,5,6,6,7]
, in modo che ogni numero intero da 1
a 7
compaia 2
volte.
Ingressi e uscite
- Usa qualsiasi cosa nella tua lingua simile alle liste. La struttura dei dati utilizzata per l'input e l'output deve essere la stessa.
- L'elenco di input conterrà solo numeri interi positivi.
- L'elenco di input non sarà vuoto.
- Non si può presumere che l'elenco di input sia ordinato.
- L'ordinamento nell'elenco di output non è importante.
Casi test
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]
punteggio
Questo è code-golf , quindi vince la risposta più breve in byte.
i
è il più grande elemento di L
, era un refuso nelle specifiche.
M=[1,1,2,2,3]
per L=[3]
"unendo L e M in un elenco che può essere completamente diviso in intervalli identici di numeri interi [1..i]"?
[1,2]
. Lo chiarirò in modo che sia chiaro che dovrebbe comportare il numero minimo di intervalli.
i
l'elemento più importante diL
oM
?