Ctrl K

Отрезки с чередованием чётности

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

7, 2, 9, 4 чередуют нечётное и чётное — true. В 9, 4, 4, 1 два чётных числа 4 стоят рядом — false. Отрезок из одного элемента всегда подходит — true.

Пример 2
values=[5, 11, 6], ranges=[[0, 2], [1, 2]] → [False, True]

5 и 11 оба нечётные, поэтому первый отрезок не подходит; во втором 11 и 6 разной чётности.

Ограничения
  • 1 ≤ len(values) ≤ 10⁵
  • 1 ≤ values[i] ≤ 10⁵
  • 1 ≤ len(ranges) ≤ 10⁵
  • 0 ≤ from ≤ to ≤ len(values) − 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый короткий рывок СредняяОтрезки с маленьким произведением СредняяСамая длинная серия единиц с k правками СредняяСамый большой лёгкий квадрат СредняяСнять с краёв ровно столько Средняя
загружаем Python…
Вход
values=[7, 2, 9, 4, 4, 1], ranges=[[0, 3], [2, 5], [4, 4]]
Ожидается
[True, False, True]

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