Публикации по теме 'data-structures'
Хеш-таблицы
Добро пожаловать! Сегодня поговорим о хеш-таблицах! Хеш-таблица упорядочивает данные, поэтому вы можете быстро найти значения для любого заданного ключа.
Сильные стороны:
Быстрый поиск . Поиск в среднем занимает O (1) раз. Гибкие клавиши . Для ключей можно использовать большинство типов данных, если они хешируемы.
Слабые стороны:
Медленный поиск в худшем случае . Иногда берут O (n). Неупорядоченный . Неееет! Нет кеша . Какие? На это уходит много времени!..
Проблема улавливания дождевой воды: три разных подхода (от грубого к оптимизированному)
Улавливание дождевой воды — очень известная задача массивов и динамического программирования . Это сложная задача как для LeetCode , так и для компьютерщики для гиков . Но в конце этого блога вы не будете считать эту проблему сложной. :)
В этом блоге мы рассмотрим проблему, начиная с подхода грубой силы и заканчивая оптимизированным.
Постановка задачи:
Учитывая n неотрицательных целых чисел, представляющих карту высот, где ширина каждой полосы равна 1 , вычислите, сколько..
Мемоизация в динамическом программировании
Что такое динамическое программирование?
Динамическое программирование — это метод, который позволяет нам решать класс задач, которые имеют перекрывающиеся подзадачи и оптимальную подструктуру . Давайте углубимся в эти концепции.
Оптимальная основа
Задача обладает свойством оптимальной подструктуры, если ее общее оптимальное решение может быть построено из оптимальных решений ее подзадач. Для чисел Фибоначчи, как известно, fib(n) = fib(n — 1) + fib(n — 2) .
Это ясно..
Путеводитель по миру соревновательного программирования для начинающих
Соревновательное программирование
Основная директива в «Конкурентном программировании» такова: «Принимая во внимание хорошо известные проблемы компьютерных наук (CS), решайте их как можно быстрее!».
Давайте переварим термины один за другим. Термин «хорошо известные проблемы CS» подразумевает, что в конкурентном программировании мы имеем дело с решенными проблемами CS, а не с исследовательскими проблемами (решения которых пока неизвестны). Некоторые люди (по крайней мере, автор..
Шаблон частотомера в решении задач.
Вы когда-нибудь сталкивались с проблемой, когда ваши решения становятся слишком медленными, когда вы пытаетесь сравнить несколько фрагментов данных друг с другом. Возможно, это связано с тем, что вы используете слишком много вложенных циклов в своем решении. Итак, как вы можете преодолеть такие проблемы. Есть несколько решений, но сегодня мы поговорим об одном-единственном шаблоне счетчика частоты .
Что такое шаблон счетчика частоты?
Это очень простой шаблон, который использует..
Односвязный список JavaScript
ВВЕДЕНИЕ
Связный список — это фундаментальная структура данных в информатике, позволяющая хранить данные в линейном, последовательном формате. В отличие от массивов, связанные списки предлагают преимущества несмежного распределения памяти, что приводит к повышенной гибкости и эффективности в определенных сценариях.
В этой статье будет подробно рассмотрена реализация связанных списков в JavaScript. Он будет включать в себя создание узлов, вставку и удаление элементов и обход списка...
B-деревья
Хотя двоичное дерево — отличная структура данных для упорядоченных словарей, хранящихся в основной памяти, эти структуры данных действительно не подходят для данных, хранящихся во внешних системах памяти, таких как диски. При доступе к данным на диске задержка (задержка ожидания начала передачи) значительна, но сразу вводится весь блок (или страница) памяти.
B-дерево изобретено, чтобы лучше справляться с доступом к блокам дисковой памяти за счет уменьшения количества узлов, которые..