Это своего рода вопрос о расстоянии редактирования, и он очень прост. У меня просто мозги на эту тему, и до сих пор не могу понять.
Учитывая ряд чисел, например
[3, 1, 1, 1]
Как наиболее эффективно превратить все числа в одно и то же число с минимальным количеством «ходов»? Под «перемещением» подразумевается добавление или удаление одного из числа.
В приведенном выше примере наиболее эффективными являются следующие шаги:
[1, 1, 1, 1]
Это потребует 2 хода, уменьшая первый номер в два раза.
Я не могу найти лучший способ выяснить это, учитывая гораздо большие массивы из сотен чисел.
Первоначально я пытался вычислить округленное среднее число (сумма всех, деленных на длину), а затем уменьшить их до вычисленного среднего, но в приведенном выше примере это сломалось, потребовав 4 хода вместо 2.
Я полагаю, я мог понять:
- Среднее,
- Режим,
- Медиана
и получите расстояние редактирования каждого из них, выбрав минимальное расстояние. Однако я не уверен, что это будет правильно в каждом отдельном случае. Как я могу знать?