TGViewer
Algorithmics: хакаем алгоритмические собесы Algorithmics: хакаем алгоритмические собесы @algorithmics_cl · 1.45K subscribers
Post #54 1.09K
Проверка массива на дубликаты

Сегодня я вам предлагаю немного снизить темп и в последний рабочий день недели посмотреть на очень простую классическую задачу.

Сложность: 🟢 Легкая

ℹ️ Описание

Дан целочисленный массив. Напишите функцию, которая принимает на вход массив и возвращает true, если какое-либо значение встречается в массиве более одного раза. Если каждое значение в массиве уникально, то функция должна возвращать false.

⚠️ Ограничения

🔹 В массиве может быть от 1 до 105 элементов
🔹 Каждое значение может быть в диапазоне от -109 до 109

1️⃣Пример

Входящие данные

[1, 2, 3, 1]

Ответ

true


2️⃣Пример

Входящие данные

[1, 2, 3, 4]

Ответ

false


✅ Решение через Hash Map

Для решения задачи этим способом достаточно проитерироваться по всем элементам массива. На каждой итерации нужно подсчитывать количество значений, которые встречаются. Для этого можно использовать Map:

▶️если в мапе не существует такого значения, то мы добавляем его туда и переходим к следующей итерации;

▶️если в мапе уже есть такое значение, то мы прерываем функцию и возвращаем true.

Посмотреть решение в блоге

🅾️ Оценка сложности

Сложность по времени

Сложность O(n), где n — количество элементов в массиве, так как в худшем случае мы пройдем в цикле по всем элементам.

Сложность по памяти

Сложность O(n), так как мы выделяем мапу для хранения частот значений.

✅ Решение через сортировку

Для решения задачи этим способом достаточно необходимо предварительно отсортировать массив в любом порядке. Так как в отсортированном массиве одинаковые значения всегда находятся рядом, нам будет достаточно пройти по всем элементам массива и вернуть true, если мы встретим два одинаковых значения рядом.

Посмотреть решение в блоге

🅾️ Оценка сложности

Сложность по времени

Сложность алгоритма равна сложности сортировки, так как она больше линейной — O(n * logn).

Сложность по памяти

Сложность O(1), так как мы не выделяем дополнительной памяти.

#easy #arrays
algorithmics-blog.github.io Проверка массива на дубликаты Подробный разбор решения задачи с примерами на языках TypeScript и GO
  • 👍 15
  • 🔥 4
  • 🤯 2
More from @algorithmics_cl
  1. Feb 8, 2025Количество провинций Давайте закрепим знания про Disjoint Set новой задачей. Сложность: 🟡…
  2. Feb 4, 2025Disjoint Set Привет, друзья! Сегодня мы с вами не будем решать конкретную задачу, а познак…
  3. Dec 4, 2024Так как в этой задаче баланс между операциями записи и чтения смещен в сторону записи, нам…
  4. Dec 4, 2024Система поиска подсказок Ранее мы уже разбирали задачу, в которой нужно было реализовать с…
  5. Oct 29, 2024Префиксное дерево (Trie) Префиксное дерево, или Trie (произносится как «три») — это структ…
  6. Oct 11, 2024Максимальная сумма парных элементов связного списка Продолжаем изучение связанных списков…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →