DEV//UNIT
← Алгоритмыdata-structures

Дек (deque)

Двусторонняя очередь: добавление и снятие с обоих концов за O(1).

время O(1) с обоих концовпамять O(n)уровень: начальный
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function isPalindrome(s: string): boolean {
2 const deque: string[] = s.split('')
3
4 while (deque.length > 1) {
5 if (deque.shift() !== deque.pop()) return false
6 }
7
8 return true
9}

Проблема

Двусторонняя очередь: добавление и снятие с обоих концов за O(1).

Что вы видите

Строка-палиндром: указатели L и R снимают пары с краёв до середины.

Как это работает

Дек объединяет стек и очередь: push/pop работают с обоих концов. Проверка палиндрома — каноническая демо-задача: пока края совпадают, снимаем пару.

Пошаговый разбор

  1. 01

    Снятие пары

    popLeft + popRight, сравнение.

  2. 02

    Сужение

    Дек уменьшается с двух сторон.

  3. 03

    Финал

    Пусто или один символ — палиндром.

Complexity и ограничения

time
O(1) с обоих концов
space
O(n)

См. complexity в шапке страницы.

Edge cases

  • Пустой вход

    Корректно завершается без лишних шагов.

  • Вырожденный случай

    Минимум работы — сразу ответ.

Где встречается в реальности

Продукт

Классический приём в реальных системах.

Собеседования

Стандартный вопрос на понимание структуры.

Связанные алгоритмы

Shorts

«Снять с двух концов сразу: палиндром за n/2 пар»

Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.

Shorts 9:16

Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.

Снять с двух концов сразу: палиндром за n/2 пар
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/deque