Ctrl K

Расстояния до двойников

Средняя
Дан массив labels длины n. Двойники элемента — остальные элементы массива с тем же значением. Расстояние между позициями i и j равно |i - j|. Верните массив длины n, где на позиции i стоит сумма расстояний от i до всех двойников элемента labels[i]. Если двойников нет, сумма равна 0. Прямой перебор пар занимает O(n²) — постарайтесь решить быстрее.
Пример 1
labels=[4, 7, 4, 4, 7] → [5, 3, 3, 4, 3]

Четвёрки стоят на позициях 0, 2, 3: для позиции 0 это |0-2| + |0-3| = 5, для 2 — 2 + 1 = 3, для 3 — 3 + 1 = 4. Семёрки на 1 и 4 отстоят друг от друга на 3.

Пример 2
labels=[8, 1, 6] → [0, 0, 0]

Все значения разные, у каждого элемента нет пары — везде 0.

Пример 3
labels=[2, 2, 2, 2] → [6, 4, 4, 6]
Ограничения
  • 1 ≤ n ≤ 10⁵
  • 1 ≤ labels[i] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный отрезок с заданной суммой СредняяОтрезок с суммой, кратной делителю СредняяПоровну орлов и решек СредняяОтрезки с заданной суммой СредняяОкна с заданным числом тревог Средняя
загружаем Python…
Вход
labels=[4, 7, 4, 4, 7]
Ожидается
[5, 3, 3, 4, 3]

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