К списку задач
Легко Решено: 0 Процент решений: 0%

Удаление дубликатов

Оставьте только первое вхождение каждого значения.

Чему вы научитесь

  • Отслеживать увиденные значения множеством
  • Оставлять первое вхождение каждого значения
  • Сохранять исходный порядок

Условие

Верните список без повторяющихся значений, сохраняя первое вхождение каждого значения в исходном порядке.

Реализуйте функцию remove_duplicates(numbers).

Входные данные

numbers: список целых чисел.

Выходные данные

Верните список без дубликатов.

Ограничения

0 ≤ длина ≤ 100 000

Примеры

Пример 1
Ввод:
numbers = [3, 1, 3, 2, 1]

Ожидаемый вывод:
expected = [3, 1, 2]
Ввод:
std::vector<long long> numbers = {3, 1, 3, 2, 1};

Ожидаемый вывод:
std::vector<long long> expected = {3, 1, 2};
Ввод:
long[] numbers = new long[] {3, 1, 3, 2, 1};

Ожидаемый вывод:
long[] expected = new long[] {3, 1, 2};

Пояснение

Оставляем 3, 1, затем 2; последующие 3 и 1 отбрасываются: [3, 1, 2].

Пример 2
Ввод:
numbers = [7, 7, 7]

Ожидаемый вывод:
expected = [7]
Ввод:
std::vector<long long> numbers = {7, 7, 7};

Ожидаемый вывод:
std::vector<long long> expected = {7};
Ввод:
long[] numbers = new long[] {7, 7, 7};

Ожидаемый вывод:
long[] expected = new long[] {7};

Пояснение

Остаётся только первый 7: [7].

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Оставляйте первое появление каждого значения и игнорируйте все последующие повторы.

Подсказка 2

Множество или похожая структура поиска поможет быстро понять, встречалось ли значение раньше.

Подсказка 3

Сохраняйте исходный порядок первых вхождений, а не сортируйте.

Ожидаемая сложность

время O(n), доп. память O(n)

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.