Ctrl K

Пара в отсортированном списке

Средняя
В магазине список цен prices уже отсортирован по неубыванию. Нужно выбрать два разных товара, которые вместе стоят ровно budget. Верните их позиции в списке [i, j], где нумерация **начинается с единицы** и i < j. Гарантируется, что подходящая пара ровно одна. Один и тот же товар дважды брать нельзя, но два разных товара могут стоить одинаково. Попробуйте обойтись O(1) дополнительной памяти — отсортированность списка здесь главная подсказка.
Пример 1
prices=[1, 4, 6, 9, 13], budget=15 → [3, 4]

6 + 9 = 15: это третья и четвёртая позиции, ответ [3, 4].

Пример 2
prices=[-8, -2, 0, 5], budget=-3 → [1, 4]

-8 + 5 = -3, позиции 1 и 4.

Пример 3
prices=[2, 5, 5, 11], budget=10 → [2, 3]

Нужны обе пятёрки — это два разных элемента на позициях 2 и 3.

Ограничения
  • 2 ≤ len(prices) ≤ 3 · 10⁴
  • -1000 ≤ prices[i] ≤ 1000
  • prices отсортирован по неубыванию
  • -1000 ≤ budget ≤ 1000
  • Подходящая пара существует и она единственная
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТройки с суммой меньше порога СредняяНайти лишнюю копию СредняяТепло в каждый домик СредняяПары с заданной разницей СредняяТройки палочек для треугольника Средняя
загружаем Python…
Вход
prices=[1, 4, 6, 9, 13], budget=15
Ожидается
[3, 4]

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