У вас есть один массив чисел, например [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