Niech będzie listą liczb całkowitych dodatnich bez szczególnego uporządkowania, które mogą zawierać duplikaty. Napisz program lub funkcję, która wypisze listę liczb całkowitych dodatnich M (których kolejność jest nieistotna), tak że scalenie L i M daje najmniejszą listę, która może całkowicie podzielić się na identyczne zakresy liczb całkowitych [ 1 .. i ] , gdzie i jest największy element w L
Przykład
Let L = [5,3,3,2,7]
. Maksymalnym elementem L
jest 7
. Najczęściej występuje określona liczba całkowita 2
( 3
pojawia się 2 razy). Dlatego musimy wypisać listę M
, która pozwoli na uzupełnienie L
, abyśmy mogli konstruować 2
zakresy liczb całkowitych od 1
do 7
.
Dlatego musimy wyprowadzać M = [1,1,2,4,4,5,6,6,7]
, aby każda liczba całkowita od 1
do pojawiała 7
się 2
razy.
Wejścia i wyjścia
- Używaj czegokolwiek w swoim języku, który jest podobny do list. Struktura danych używana dla danych wejściowych i wyjściowych musi być taka sama.
- Lista wejściowa będzie zawierać tylko dodatnie liczby całkowite.
- Lista wejściowa nie będzie pusta.
- Nie można założyć, że lista wejściowa jest posortowana.
- Kolejność na liście wyników jest nieistotna.
Przypadki testowe
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]
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
i
jest największym elementem L
, to była literówka w specyfikacji.
M=[1,1,2,2,3]
do L=[3]
while „scalanie L i M wyniki na liście, które mogą całkowicie podzielona na identycznych zakresów liczb całkowitych [1..i]”?
[1,2]
. Wyjaśnię to, aby było jasne, że powinno to skutkować minimalną liczbą zakresów.
i
największym elementemL
lubM
?