Публикации по теме 'data-structures'
25 лучших алгоритмов, которые должен знать каждый программист
Хорошее знание стандартных алгоритмов не менее важно, чем выбор правильной структуры данных . Ниже приводится список из 25 лучших алгоритмов, которые должен знать каждый программист и студент, изучающий информатику.
Алгоритм двоичного поиска Алгоритм поиска в ширину (BFS) Алгоритм поиска в глубину (DFS) Алгоритм сортировки слиянием Алгоритм быстрой сортировки Алгоритм Крускала Алгоритм Флойда Уоршалла Алгоритм Дейкстры Алгоритм Беллмана-Форда Алгоритм..
Реализуйте двоичное дерево поиска в JavaScript
Это третья из серии статей о реализации структур данных в JavaScript. Если вы новичок в структурах данных, обязательно начните сначала с Стеки .
Анализ
Двоичное дерево поиска (BST) - это древовидная структура данных на основе узлов, в которой каждый узел может иметь не более двух дочерних элементов. BST поддерживает несколько методов, общих для любого дерева поиска, таких как contains, insert и depthFirstLog, и delete. Мы поговорим об этом позже! Есть два основных способа..
Палиндромные перестановки
Задача: Напишите функцию, которая проверяет, можно ли переставить буквы, образующие строку, для формирования палиндрома. Например, слово «назидать» можно заменить словом «обожествленный».
Решение:
Наивный подход находит все перестановки строки и проверяет палиндром. Поиск всех перестановок — это комбинаторный взрыв и очень дорого.
Интересные наблюдения, если длина строки четная. Все символы будут четными. Если длина нечетная, только один символ будет считаться нечетным. В..
Динамическое программирование (DP) - эффективный способ 😎
Разъяснение с примерами. Просто взгляните и дайте мне знать, что думаете по этому поводу!
Обзор
Динамическое программирование и мемоизация работают вместе. Основное различие между динамическим программированием и разделяй и властвуй состоит в том, что в последнем случае подзадачи независимы , тогда как в DP можно быть перекрытием подзадач .
Используя мемоизацию [ведение таблицы подзадач, уже решенных], динамическое программирование снижает экспоненциальную сложность..
Фенвик-дерево? Красивая структура данных !!!
Больше я смотрю на логику, лежащую в основе этой структуры данных, больше я заинтригован ею, а затем перехожу к ее реализации, которая устанавливает собственный уровень.
Это всего лишь вводное объяснение дерева Фенвика на простом примере.
Введение
Дерево Фенвика или двоичное индексированное дерево - это структура данных, которая может эффективно вычислять суммы префиксов и обновлять элементы.
Основная идея
Каждое целое число можно представить как сумму степеней двойки. Таким..
Освоение структур данных в Ruby - Стеки
Стеки - это особый вид связанных списков, которые позволяют нам эффективно хранить полученные данные в порядке «последний пришел - первый ушел» (LIFO) . Или, другими словами, элементы извлекаются в обратном порядке, в котором они были сохранены в стеке.
Как и в случае с очередями , стеки не позволяют нам вставлять / удалять элементы в случайных местах, и, как и очереди, они не более чем последовательности связанных узлов.
Виртуальные машины на основе стека, такие как YARV (виртуальная..
Решение проблемы диагональной разницы HackerRank в JavaScript
Когда я учился на HackerRank, я столкнулся с проблемой диагональной разницы. Я определенно виноват в том, что слишком много думал и изобретал способы, которые привели к потере времени.
После многих попыток я в конце концов решил задачу и пишу эту статью, чтобы просто объяснить ее как ссылку на себя и других разработчиков. Давайте начнем.
Подсказка
Учитывая квадратную матрицу, вычислите абсолютное значение разности сумм ее диагоналей.
Пример матрицы ниже:
Диагональ слева..