DEV//UNIT

Наибольшая возрастающая подпоследовательность

Самая длинная цепочка роста — элементы можно пропускать.

время O(n²)память O(n)уровень: средний
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function lisLength(a: number[]): number {
2 const n = a.length
3 const dp = a.map(() => 1) // dp[i] — длина LIS, кончающейся в i
4
5 for (let i = 1; i < n; i++) {
6 for (let j = 0; j < i; j++) {
7 if (a[j] < a[i] && dp[j] + 1 > dp[i]) {
8 dp[i] = dp[j] + 1
9 }
10 }
11 }
12
13 return Math.max(...dp)
14}

Проблема

Самая длинная цепочка роста — элементы можно пропускать.

Что вы видите

Столбики с подписями len: каждый смотрит на всех меньших слева и продлевает лучшую цепочку.

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

dp[i] — длина LIS, кончающейся в i: перебираем j < i с a[j] < a[i] и продлеваем. O(n²) версия — фундамент; существует O(n log n) с бинарным поиском. Восстановление — по предкам.

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

  1. 01

    Каждый элемент

    len=1 как минимум.

  2. 02

    Меньшие слева

    Продлеваем лучшую цепочку.

  3. 03

    Рекорд

    Максимум по len.

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

time
O(n²)
space
O(n)

Сложность см. в шапке страницы.

Edge cases

  • Пустой вход

    Корректная тривиальная обработка.

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

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

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

Переносы строк

Оптимальный auto-wrap через LIS.

Тренды

Поиск растущих цепочек в последовательностях.

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

Топ-3 задача по динамике.

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

Shorts

«Цепочка роста сквозь массив»

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

Shorts 9:16

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

Цепочка роста сквозь массив
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/lis