Ctrl K

K-я по величине разница в паре

Сложная
Дан массив неотрицательных целых чисел values. Для каждой пары позиций i < j посчитайте разницу |values[i] - values[j]|. Всего пар n·(n−1)/2, где n — длина массива. Выпишите все эти разницы в порядке неубывания (одинаковые разницы разных пар идут отдельными элементами) и верните ту, что стоит на k-м месте, считая с единицы. Перебор всех пар работает за O(n² log n) — попробуйте быстрее.
Пример 1
values=[7, 2, 9, 4], k=3 → 3

Разницы всех шести пар: |7−2| = 5, |7−9| = 2, |7−4| = 3, |2−9| = 7, |2−4| = 2, |9−4| = 5. По возрастанию: 2, 2, 3, 5, 5, 7 — третья равна 3.

Пример 2
values=[5, 5, 5], k=3 → 0

Все три пары состоят из равных чисел, у каждой разница 0.

Пример 3
values=[10, 1], k=1 → 9

Пара всего одна, её разница 9.

Ограничения
  • 2 ≤ n = len(values) ≤ 10⁴
  • 0 ≤ values[i] ≤ 10⁶
  • 1 ≤ k ≤ n·(n−1)/2
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЗагруженные пары серверов СложнаяКрасота клумб на бюджете СложнаяРоботы собирают монеты СложнаяТройки с суммой меньше порога СредняяЗначения в обоих списках Лёгкая
загружаем Python…
Вход
values=[7, 2, 9, 4], k=3
Ожидается
3

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