Ctrl K

Суммы самых частых в окне

Лёгкая
Дан массив values длины n и два числа width и top. Для любого отрезка массива определим его **частотную сумму** так: 1. Посчитайте, сколько раз встречается каждое значение. 2. Упорядочьте различные значения по частоте; при равной частоте частым считается большее значение. 3. Оставьте только top самых частых значений (все их вхождения) и сложите оставленные элементы. Если различных значений меньше top, частотная сумма равна сумме всего отрезка. Верните массив из n - width + 1 чисел, где i-е число — частотная сумма отрезка values[i..i + width - 1].
Пример 1
values=[4, 4, 1, 7, 1, 4], width=4, top=1 → [8, 2, 2]

Окна: [4,4,1,7] — чаще всех 4, сумма 8; [4,1,7,1] — чаще всех 1, сумма 2; [1,7,1,4] — снова 1, сумма 2.

Пример 2
values=[2, 9, 2, 9, 5], width=5, top=2 → [22]

Окно одно. 2 и 9 встречаются по два раза, 5 — один раз. Оставляем две группы: 2 + 2 + 9 + 9 = 22.

Пример 3
values=[3, 6, 8], width=2, top=1 → [6, 8]

В каждом окне все числа встречаются по разу, поэтому побеждает большее: 6, затем 8.

Ограничения
  • 1 ≤ n = values.length ≤ 50
  • 1 ≤ values[i] ≤ 50
  • 1 ≤ top ≤ width ≤ n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМедиана в скользящем окне СложнаяСамый узкий отрезок для всех списков СложнаяДешёвая нарезка с близкими началами СложнаяСуммы самых частых в окне: большие данные СложнаяРовный участок забора Средняя
загружаем Python…
Вход
values=[4, 4, 1, 7, 1, 4], width=4, top=1
Ожидается
[8, 2, 2]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 186 тестов на сервере, включая скрытые.