Выбор ответа Middle Префиксные суммы обновлено

Зачем map.set(0, 1)

Вопрос

В решении «подмассивы с суммой k» Map префиксов инициализируют new Map([[0, 1]]). Что сломается без этого?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Не посчитаются подмассивы, начинающиеся с самого индекса 0. Пустой префикс (сумма 0 до первого элемента) это законная левая граница.

Варианты ответа

  1. Ничего: это оптимизация, чтобы не проверять пустую Map
  2. Все подмассивы будут посчитаны дважды, ответ удвоится
  3. Будет деление на ноль при первом совпадении префикса
  4. Не посчитаются подмассивы, начинающиеся с самого индекса 0правильный ответ

Разбор

Пустой префикс (сумма 0 до первого элемента) это законная левая граница. Если сумма первых j элементов равна k, нужно найти в Map префикс 0. Без начальной записи такие подмассивы теряются.

  • Это не оптимизация, а корректность.
  • Двойного счёта нет.
  • Деления в алгоритме нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.