Выбор ответа Junior Скользящее окно спрашивают часто обновлено

Максимальная сумма окна длины k

Вопрос

Нужно найти максимальную сумму подмассива ровно из k подряд идущих элементов. Сложность лучшего решения?

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

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

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

Коротко

Правильный ответ: O(n): прибавлять входящий, вычитать выходящий. Окно сдвигается на 1: сумма меняется на +arr[i] - arr[i - k], это O(1) на шаг, O(n) всего. - Пересчёт каждого окна O(n · k). - Сортировка ломает требование «подряд идущих». - O(k) невозможно: надо просмотреть все n элементов.

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

  1. O(n · k): считать сумму каждого окна заново
  2. O(n log n): отсортировать и взять k наибольших
  3. O(k): достаточно первого окна и его соседей
  4. O(n): прибавлять входящий, вычитать выходящийправильный ответ

Разбор

Окно сдвигается на 1: сумма меняется на +arr[i] - arr[i - k], это O(1) на шаг, O(n) всего.

  • Пересчёт каждого окна O(n · k).
  • Сортировка ломает требование «подряд идущих».
  • O(k) невозможно: надо просмотреть все n элементов.

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

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

Термины по теме