Esse é um tipo de pergunta de distância de edição e é muito fácil. Estou com morte cerebral bastante neste assunto e não consigo descobrir até agora.
Dada uma série de números, por exemplo
[3, 1, 1, 1]
Como alguém transformaria todos os números de maneira mais eficiente no mesmo número, com o número mínimo de "movimentos"? "Mover" significa adicionar ou remover um de um número.
No exemplo acima, as jogadas mais eficientes seriam:
[1, 1, 1, 1]
Isso exigiria 2 movimentos, reduzindo o primeiro número duas vezes.
Não consigo descobrir a melhor maneira de descobrir isso, considerando matrizes muito maiores de centenas de números.
Inicialmente, tentei calcular o número médio arredondado (soma de todos os divididos pelo comprimento) e reduzi-los à média calculada, mas o exemplo acima quebrou isso, exigindo 4 movimentos em vez de 2.
Suponho que poderia imaginar:
- A média,
- O modo,
- A mediana
e obtenha a distância de edição de cada um deles, escolhendo a distância mínima. No entanto, não tenho certeza de que isso esteja correto em todas as instâncias. Como posso saber?