Введение
По определению, уникальные идентификаторы должны быть уникальными. Наличие нескольких одинаковых идентификаторов приводит к получению неожиданных данных. Но поскольку данные поступают одновременно из нескольких источников, может быть сложно обеспечить уникальность. Напишите функцию, которая унифицирует список идентификаторов.
Возможно, это худший пазл из всех, что я написал, но вы поняли.
Требования
Учитывая список от нуля или более натуральных чисел, примените следующие правила к каждому числу от первого до последнего:
- Если номер первый в своем роде, сохраните его.
- Если число встречалось ранее, замените его наименьшим положительным целым числом, которого нет нигде во всем списке ввода или в любом существующем выводе.
Для решения:
- Решением может быть программа или функция.
- Ввод может быть строкой, массивом, переданным в качестве аргументов, или вводом с клавиатуры.
- Вывод может быть строкой, массивом или выводиться на экран.
- Все числа в списке вывода различны.
Предположения
- Список ввода чистый. Он содержит только положительные целые числа.
- Целое положительное число имеет диапазон от 1 до 2 31 -1.
- Менее 256 МБ памяти доступно для переменных вашей программы. (Как правило, массивы из 2 147 483 648 элементов не допускаются.)
Тестовые случаи
Input: empty
Output: empty
Input: 5
Output: 5
Input: 1, 4, 2, 5, 3, 6
Output: 1, 4, 2, 5, 3, 6
Input: 3, 3, 3, 3, 3, 3
Output: 3, 1, 2, 4, 5, 6
Input: 6, 6, 4, 4, 2, 2
Output: 6, 1, 4, 3, 2, 5
Input: 2147483647, 2, 2147483647, 2
Output: 2147483647, 2, 1, 3
счет
Просто простой код гольф. Наименьшее количество байтов к этому времени на следующей неделе побеждает.
6, 6, ...
давать 6, 1, ...
?
6, 6, 4, 4, 2, 2
Тестовый пример подтверждает интерпретацию Адама: ожидаемый результат есть 6, 1, 4, 3, 2, 5
, а нет 6, 1, 4, 2, 3, 5
.
6, 6, 1, 2, 3, 4, 5
→6, 7, 1, 2, 3, 4, 5