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


Хеш-таблицы
Добро пожаловать! Сегодня поговорим о хеш-таблицах! Хеш-таблица упорядочивает данные, поэтому вы можете быстро найти значения для любого заданного ключа. Сильные стороны: Быстрый поиск . Поиск в среднем занимает O (1) раз. Гибкие клавиши . Для ключей можно использовать большинство типов данных, если они хешируемы. Слабые стороны: Медленный поиск в худшем случае . Иногда берут O (n). Неупорядоченный . Неееет! Нет кеша . Какие? На это уходит много времени!..

Проблема улавливания дождевой воды: три разных подхода (от грубого к оптимизированному)
Улавливание дождевой воды — очень известная задача массивов и динамического программирования . Это сложная задача как для LeetCode , так и для компьютерщики для гиков . Но в конце этого блога вы не будете считать эту проблему сложной. :) В этом блоге мы рассмотрим проблему, начиная с подхода грубой силы и заканчивая оптимизированным. Постановка задачи: Учитывая n неотрицательных целых чисел, представляющих карту высот, где ширина каждой полосы равна 1 , вычислите, сколько..

Мемоизация в динамическом программировании
Что такое динамическое программирование? Динамическое программирование — это метод, который позволяет нам решать класс задач, которые имеют перекрывающиеся подзадачи и оптимальную подструктуру . Давайте углубимся в эти концепции. Оптимальная основа Задача обладает свойством оптимальной подструктуры, если ее общее оптимальное решение может быть построено из оптимальных решений ее подзадач. Для чисел Фибоначчи, как известно, fib(n) = fib(n — 1) + fib(n — 2) . Это ясно..

Путеводитель по миру соревновательного программирования для начинающих
Соревновательное программирование Основная директива в «Конкурентном программировании» такова: «Принимая во внимание хорошо известные проблемы компьютерных наук (CS), решайте их как можно быстрее!». Давайте переварим термины один за другим. Термин «хорошо известные проблемы CS» подразумевает, что в конкурентном программировании мы имеем дело с решенными проблемами CS, а не с исследовательскими проблемами (решения которых пока неизвестны). Некоторые люди (по крайней мере, автор..

Шаблон частотомера в решении задач.
Вы когда-нибудь сталкивались с проблемой, когда ваши решения становятся слишком медленными, когда вы пытаетесь сравнить несколько фрагментов данных друг с другом. Возможно, это связано с тем, что вы используете слишком много вложенных циклов в своем решении. Итак, как вы можете преодолеть такие проблемы. Есть несколько решений, но сегодня мы поговорим об одном-единственном шаблоне счетчика частоты . Что такое шаблон счетчика частоты? Это очень простой шаблон, который использует..

Односвязный список JavaScript
ВВЕДЕНИЕ Связный список — это фундаментальная структура данных в информатике, позволяющая хранить данные в линейном, последовательном формате. В отличие от массивов, связанные списки предлагают преимущества несмежного распределения памяти, что приводит к повышенной гибкости и эффективности в определенных сценариях. В этой статье будет подробно рассмотрена реализация связанных списков в JavaScript. Он будет включать в себя создание узлов, вставку и удаление элементов и обход списка...

B-деревья
Хотя двоичное дерево — отличная структура данных для упорядоченных словарей, хранящихся в основной памяти, эти структуры данных действительно не подходят для данных, хранящихся во внешних системах памяти, таких как диски. При доступе к данным на диске задержка (задержка ожидания начала передачи) значительна, но сразу вводится весь блок (или страница) памяти. B-дерево изобретено, чтобы лучше справляться с доступом к блокам дисковой памяти за счет уменьшения количества узлов, которые..