Войти Регистрация
Алгоритмы

128. Три перевода ближе всего к сумме

Средняя

Клиент Т‑Банка ищет, какие три входящих перевода из amounts (в рублях) закрыли счёт на target рублей. Точного совпадения может не быть.

Выберите три разных перевода (по позициям) и верните их сумму, ближайшую к target. Если две суммы одинаково близки, верните меньшую.

В работе: Сверка в приложении: «скорее всего, счёт на 15 000 ₽ оплачен этими тремя переводами».

Пример 1

Ввод
amounts = [5000, 2500, 7000, 1200, 3300]
target = 15000
Вывод
15300

5000 + 7000 + 3300 = 15 300, точнее не собрать.

Пример 2

Ввод
amounts = [100, 200, 300, 400]
target = 650
Вывод
600

600 и 700 одинаково далеко — берём 600.

Ограничения

  • 3 ≤ n ≤ 1000
  • −10⁶ ≤ amounts[i] ≤ 10⁶ (возвраты отрицательные)
  • −3·10⁶ ≤ target ≤ 3·10⁶
  • Лимит — 2 с на тест (2000 мс).
Как вызывается ваш код Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула. print() и console.log() уходят в консоль.
def closest_three(amounts, target):
Два указателяСортировкацельn2

Источник: наша задача на данных Т-Банка. Условие пересказано своими словами.