← Все треки

live-coding

Поиск, окна и интервалы

Бинарный поиск, сумма на отрезке и встречи в переговорках. Набор для секции, где решение просят улучшать по ходу разговора.

Код можно запускать, разбор открыт. Внутри шага задачи усложняются, следующий шаг уже про другую формулировку.

Создайте аккаунт, чтобы видеть прогресс по треку.

Шаг 1. Поиск в упорядоченных данных

Сначала матрица, уже уложенная по возрастанию. Затем массив, сдвинутый по кругу: граница порядка сама выбирает половину.

  1. — 5233. Поиск в отсортированной матрице Easy 1490 ₽ 2 решили
  2. — 2009. Поиск в повёрнутом отсортированном массиве Medium 1490 ₽ 7 решили

Шаг 2. Сумма на отрезке

Минимальное окно с суммой хотя бы target, число подмассивов с суммой k и максимум каждого окна. Положительные числа закрываются двумя указателями, произвольные — префиксом и хешем, максимум окна — деком.

  1. — 2004. Минимальная длина подмассива с суммой ≥ target Medium 1490 ₽ 6 решили
  2. — 2002. Число подмассивов с суммой K Medium 1490 ₽ 9 решили
  3. — 5247. Максимум каждого скользящего окна Medium 1490 ₽ 1 решил

Шаг 3. Интервалы

Сначала склейте пересекающиеся отрезки. Следующий вопрос на тех же данных: сколько переговорок нужно в пике.

  1. — 2008. Объединение интервалов Medium 1490 ₽ 5 решили
  2. — 5813. Сколько переговорок нужно Medium 1490 ₽ 0 решили

Шаг 4. Поиск по ответу

Минимальная грузоподъёмность, при которой коробки уезжают за заданное число дней. Кандидат проверяется одним проходом, само значение ищется двоичным поиском.

  1. — 5811. Минимальная грузоподъёмность фургона Medium 1490 ₽ 1 решил