Минимальное количество операций для массива чисел, чтобы все они были равны одному числуPython

Программы на Python
Anonymous
Минимальное количество операций для массива чисел, чтобы все они были равны одному числу

Сообщение Anonymous »

У вас есть один массив чисел, например [2, 5, 1]. У вас есть второй массив чисел, например [8, 4, 3]. Сколько операций потребуется для каждого числа во втором массиве, чтобы все числа первого массива стали равны этому числу? Увеличивать или уменьшать можно только на 1 за раз.

Код: Выделить всё

To get to 8, it would take (8-2)+(8-5)+(8-1)=16 operations.
To get to 4, it would take (4-2)+(5-4)+(4-1)=6 operations.
To get to 3, it would take (3-2)+(5-3)+(3-1)=5 operations.
So the answer would be [16, 6, 5].
Мне удалось сделать это в одну строку:

Код: Выделить всё

answer = [sum(abs(x-y) for x in a1) for y in a2]
Но это было недостаточно быстро, поскольку массивы могут содержать до 105 элементов. Как мне сделать это быстрее?

Подробнее здесь: https://stackoverflow.com/questions/790 ... one-number

Вернуться в «Python»