Ctrl K

Расставить с ровным шагом

Средняя
Последовательность из хотя бы двух чисел назовём ровной, если разность между любыми двумя соседними числами одна и та же: например, 2, 5, 8, 11 или 4, 4, 4. Дан массив целых чисел values и два массива одинаковой длины starts и ends, задающие запросы. Запрос i — это кусок values[starts[i]], …, values[ends[i]] (оба конца включительно). Верните список булевых значений: i-й элемент равен True, если числа из куска запроса i можно переставить так, чтобы получилась ровная последовательность, и False иначе.
Пример 1
values=[10, 1, 7, 4, 2], starts=[0, 1, 3], ends=[3, 2, 4] → [True, True, True]

[10, 1, 7, 4] переставляется в 1, 4, 7, 10 с шагом 3. [1, 7] — любые два числа подходят. [4, 2] — это 2, 4.

Пример 2
values=[3, 3, 5, 9, 1], starts=[0, 1, 0], ends=[1, 3, 4] → [True, False, False]

[3, 3] — шаг 0. [3, 5, 9] даёт шаги 2 и 4 — не подходит. [3, 3, 5, 9, 1] — два одинаковых числа при ненулевом размахе, ровно не расставить.

Ограничения
  • 2 ≤ len(values) ≤ 500
  • 1 ≤ len(starts) == len(ends) ≤ 500
  • 0 ≤ starts[i] < ends[i] < len(values)
  • -10⁵ ≤ values[i] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазложить анаграммы по группам СредняяБольше трети голосов СредняяСамые частые значения СредняяПодпоследовательность только одного слова СредняяПары с заданной разницей Средняя
загружаем Python…
Вход
values=[10, 1, 7, 4, 2], starts=[0, 1, 3], ends=[3, 2, 4]
Ожидается
[True, True, True]

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