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