Узнайте, как эффективно находить дубликаты с помощью простых и оптимизированных фрагментов кода. Прокачай свои навыки программирования прямо сейчас! #JavaScript #Советы по кодированию
В этой статье мы раскроем тайну поиска повторяющихся элементов в массиве с помощью JavaScript. Мы углубимся в логику этого процесса и предоставим вам два фрагмента кода: простой и оптимизированную версию, обеспечивающую отличную временную и пространственную сложность. Приготовьтесь обнаружить эти скрытые дубликаты!
Логика:
Чтобы найти повторяющиеся элементы в массиве, нам нужно сравнить каждый элемент со всеми последующими элементами в массиве. Если совпадение найдено, это означает, что элемент является дубликатом. Мы можем хранить дубликаты в отдельном контейнере и возвращать их как результат.
Простой фрагмент кода:
Начнем с простого фрагмента кода, реализующего логику поиска повторяющихся элементов в массиве:
function findDuplicates(array) { const duplicates = []; for (let i = 0; i < array.length; i++) { for (let j = i + 1; j < array.length; j++) { if (array[i] === array[j] && !duplicates.includes(array[i])) { duplicates.push(array[i]); } } } return duplicates; } // Usage const numbers = [1, 2, 3, 4, 5, 2, 6, 3, 7, 8, 8]; const duplicateNumbers = findDuplicates(numbers); console.log('Duplicate numbers:', duplicateNumbers);
Этот фрагмент кода принимает массив в качестве входных данных и инициализирует пустой массив с именем duplicates
для хранения повторяющихся элементов. Он использует вложенные циклы для сравнения каждого элемента со всеми последующими элементами в массиве. Если совпадение найдено, а дубликат еще не присутствует в массиве duplicates
, он добавляет повторяющийся элемент в массив. Наконец, функция возвращает массив дубликатов.
Оптимизированный фрагмент кода:
Теперь давайте углубимся в оптимизированную версию кода, которая обеспечивает лучшую временную и пространственную сложность:
function findDuplicatesOptimized(array) { const duplicates = []; const frequencyMap = {}; for (let i = 0; i < array.length; i++) { const element = array[i]; if (frequencyMap[element]) { if (!duplicates.includes(element)) { duplicates.push(element); } } else { frequencyMap[element] = true; } } return duplicates; } // Usage const numbers = [1, 2, 3, 4, 5, 2, 6, 3, 7, 8, 8]; const duplicateNumbers = findDuplicatesOptimized(numbers); console.log('Duplicate numbers:', duplicateNumbers);
В этом оптимизированном фрагменте кода мы используем дополнительную структуру данных под названием frequencyMap
для отслеживания частоты каждого элемента. Когда мы перебираем массив, мы проверяем, существует ли уже элемент в frequencyMap
. Если это так, это дубликат, и мы добавляем его в массив duplicates
. Если он не существует, мы помечаем его, как показано в файле frequencyMap
. Этот подход снижает потребность во вложенных циклах и устраняет метод includes()
, что приводит к улучшению временной сложности.
Краткое содержание:
В нашем стремлении раскрыть дубликаты, скрывающиеся в массиве, мы исследовали логику поиска повторяющихся элементов с помощью JavaScript. Мы предоставили два фрагмента кода: простую версию и оптимизированную версию. Оптимизированная версия использует карту частот для эффективного выявления дубликатов, что приводит к уменьшению временной и пространственной сложности. Используя эти методы, теперь вы можете легко обнаруживать скрытые дубликаты в своих массивах и предпринимать соответствующие действия.
Надеюсь, что приведенная выше статья дала лучшее понимание. Если у вас есть какие-либо вопросы относительно областей, которые я обсуждал в этой статье, области улучшения, не стесняйтесь комментировать ниже.
[Раскрытие информации: эта статья является совместным творением, в котором мои собственные идеи сочетаются с помощью ChatGPT для оптимальной артикуляции.]