DEV//UNIT

Дом-грабитель

Грабить дома нельзя два подряд: взять или пропустить — два бегущих максимума.

время O(n)память O(1)уровень: начальный
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function rob(money: number[]): number {
2 let prev2 = 0 // максимум до дома i-2
3 let prev1 = 0 // максимум до дома i-1
4
5 for (const m of money) {
6 const take = prev2 + m // берём этот дом
7 const skip = prev1 // пропускаем
8 prev2 = prev1
9 prev1 = Math.max(take, skip)
10 }
11
12 return prev1
13}

Проблема

Грабить дома нельзя два подряд: взять или пропустить — два бегущих максимума.

Что вы видите

Каждый дом подсвечивается решением, подпись best — лучший улов до этого дома.

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

best(i) = max(best(i−2)+деньги_i, best(i−1)): взять нельзя после соседа. Два скользящих значения, O(1) памяти. Схема «взять/пропустить с запретом соседей» — основа scheduling-задач.

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

  1. 01

    Взять

    Плюс деньги дома и i−2 назад.

  2. 02

    Пропустить

    Наследуем i−1.

  3. 03

    Жадность врёт

    Локально жирный дом ломает цепочку.

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

time
O(n)
space
O(1)

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

Edge cases

  • Пустой вход

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

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

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

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

Расписание

Несовместимые во времени задачи = «нельзя соседние».

Выкуп дорог

Выбор несмежных сегментов трассы.

Реклама

Максимум выручки без подряд идущих слотов.

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

Shorts

«Нельзя два соседних: максимум улова»

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

Shorts 9:16

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

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