Публикации по теме 'data-structures'


25 лучших алгоритмов, которые должен знать каждый программист
Хорошее знание стандартных алгоритмов не менее важно, чем выбор правильной структуры данных . Ниже приводится список из 25 лучших алгоритмов, которые должен знать каждый программист и студент, изучающий информатику. Алгоритм двоичного поиска Алгоритм поиска в ширину (BFS) Алгоритм поиска в глубину (DFS) Алгоритм сортировки слиянием Алгоритм быстрой сортировки Алгоритм Крускала Алгоритм Флойда Уоршалла Алгоритм Дейкстры Алгоритм Беллмана-Форда Алгоритм..

Реализуйте двоичное дерево поиска в JavaScript
Это третья из серии статей о реализации структур данных в JavaScript. Если вы новичок в структурах данных, обязательно начните сначала с Стеки . Анализ Двоичное дерево поиска (BST) - это древовидная структура данных на основе узлов, в которой каждый узел может иметь не более двух дочерних элементов. BST поддерживает несколько методов, общих для любого дерева поиска, таких как contains, insert и depthFirstLog, и delete. Мы поговорим об этом позже! Есть два основных способа..

Палиндромные перестановки
Задача: Напишите функцию, которая проверяет, можно ли переставить буквы, образующие строку, для формирования палиндрома. Например, слово «назидать» можно заменить словом «обожествленный». Решение: Наивный подход находит все перестановки строки и проверяет палиндром. Поиск всех перестановок — это комбинаторный взрыв и очень дорого. Интересные наблюдения, если длина строки четная. Все символы будут четными. Если длина нечетная, только один символ будет считаться нечетным. В..

Динамическое программирование (DP) - эффективный способ 😎
Разъяснение с примерами. Просто взгляните и дайте мне знать, что думаете по этому поводу! Обзор Динамическое программирование и мемоизация работают вместе. Основное различие между динамическим программированием и разделяй и властвуй состоит в том, что в последнем случае подзадачи независимы , тогда как в DP можно быть перекрытием подзадач . Используя мемоизацию [ведение таблицы подзадач, уже решенных], динамическое программирование снижает экспоненциальную сложность..

Фенвик-дерево? Красивая структура данных !!!
Больше я смотрю на логику, лежащую в основе этой структуры данных, больше я заинтригован ею, а затем перехожу к ее реализации, которая устанавливает собственный уровень. Это всего лишь вводное объяснение дерева Фенвика на простом примере. Введение Дерево Фенвика или двоичное индексированное дерево - это структура данных, которая может эффективно вычислять суммы префиксов и обновлять элементы. Основная идея Каждое целое число можно представить как сумму степеней двойки. Таким..

Освоение структур данных в Ruby - Стеки
Стеки - это особый вид связанных списков, которые позволяют нам эффективно хранить полученные данные в порядке «последний пришел - первый ушел» (LIFO) . Или, другими словами, элементы извлекаются в обратном порядке, в котором они были сохранены в стеке. Как и в случае с очередями , стеки не позволяют нам вставлять / удалять элементы в случайных местах, и, как и очереди, они не более чем последовательности связанных узлов. Виртуальные машины на основе стека, такие как YARV (виртуальная..

Решение проблемы диагональной разницы HackerRank в JavaScript
Когда я учился на HackerRank, я столкнулся с проблемой диагональной разницы. Я определенно виноват в том, что слишком много думал и изобретал способы, которые привели к потере времени. После многих попыток я в конце концов решил задачу и пишу эту статью, чтобы просто объяснить ее как ссылку на себя и других разработчиков. Давайте начнем. Подсказка Учитывая квадратную матрицу, вычислите абсолютное значение разности сумм ее диагоналей. Пример матрицы ниже: Диагональ слева..