Це свого роду питання про відстань до редагування, і це дуже просто. Я просто мертвий з цього приводу і не можу цього розібратися.
Дано ряд чисел, напр
[3, 1, 1, 1]
Як би найефективніше перетворити всі числа в одне і те ж число з мінімальною кількістю "ходів"? Під "переміщенням" мається на увазі додавання або видалення одного з числа.
У наведеному вище прикладі найбільш ефективними рухами будуть:
[1, 1, 1, 1]
Для цього знадобиться 2 ходи, зменшивши перше число вдвічі.
Я не можу знайти найкращий спосіб це дізнатися, враховуючи набагато більші масиви з сотень чисел.
Спочатку я спробував обчислити округлене середнє число (сума всіх розділених на довжину), а потім зменшив їх до обчисленої середньої, але наведений вище приклад порушив це, вимагаючи 4 ходів замість 2.
Я думаю, я міг зрозуміти:
- Середня,
- Режим,
- Середня
і отримати відстань редагування кожного з них, вибравши мінімальну відстань. Однак я не впевнений, що це було б правильно у кожному окремому випадку. Як я можу знати?