Ctrl K

Окно с OR ближе всего к цели

Сложная
Дан массив целых чисел values и число target. Окно — это непустой отрезок подряд идущих элементов values[l..r]. Значение окна — побитовое OR всех его элементов: values[l] OR values[l + 1] OR ... OR values[r]. Выберите окно, значение которого ближе всего к target, и верните наименьшую возможную разницу |target − значение окна|.
Пример 1
values=[4, 1, 8, 2], target=6 → 1

Окно [4, 1] даёт 4 OR 1 = 5, а [4, 1, 8] — уже 13. Ни одно окно не даёт ровно 6, ближе всего 5, поэтому ответ |6 − 5| = 1.

Пример 2
values=[3, 5, 6], target=7 → 0

5 OR 6 = 7 — ровно цель.

Пример 3
values=[16, 16], target=3 → 13

Любое окно даёт 16, разница 13.

Ограничения
  • 1 ≤ values.length ≤ 10⁵
  • 0 ≤ values[i], target < 2³¹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПобитовое И отрезка поближе к цели СложнаяКуски с заданным AND и дешёвые хвосты СложнаяОтрезки с точным AND СложнаяМеньшие справа СложнаяСуммы отрезков в заданной полосе Сложная
загружаем Python…
Вход
values=[4, 1, 8, 2], target=6
Ожидается
1

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