Пусть будет списком натуральных чисел без определенного порядка и который может содержать дубликаты. Напишите программу или функцию, которая выводит список натуральных чисел M (порядок которых не имеет значения), так что объединение L и M приводит к наименьшему списку, который может полностью разбиваться на идентичные диапазоны целых чисел [ 1 .. 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?