Нехай - перелік натуральних чисел без конкретного впорядкування, який може містити дублікати. Напишіть програму або функцію, яка виводить список натуральних чисел M (впорядкування яких неважливо), таким чином, що об'єднання і призводить до найменшого списку, який може повністю розділитися на однакові діапазони цілих чисел , де - найбільший елементM [ 1 .. i ] i L
Приклад
Нехай L = [5,3,3,2,7]. Максимальним елементом Lє 7. Найчастіше трапляється певне ціле число 2( 3з’являється 2 рази). Тому нам потрібно вивести список, Mякий дозволить завершити, Lщоб ми могли побудувати 2діапазони цілих чисел від 1до 7.
Таким чином, нам потрібно вивести M = [1,1,2,4,4,5,6,6,7], так що кожне ціле число від 1до 7з'являється 2раз.
Входи та виходи
- Використовуйте що-небудь у своїй мові, подібне до списків. Структура даних, що використовується для введення та виводу, повинна бути однаковою.
- Список вводу міститиме лише додатні цілі числа.
- Список вводу не буде порожнім.
- Ви не можете припустити, що список введення відсортований.
- Порядок в списку вихідних даних є неважливим.
Тестові справи
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]
Оцінка балів
Це код-гольф , тому найкоротша відповідь у байтах виграє.
i- це найбільший елемент L, це був друкарський опис у специфікаціях.
M=[1,1,2,2,3]за тим L=[3], що "об'єднання L і M призводить до списку, який може цілком розділитися на однакові діапазони цілих чисел [1..i]"?
[1,2]. Я проясню це так, щоб було зрозуміло, що це повинно призвести до мінімальної кількості діапазонів.
iнайбільшим елементомLабоM?