Bom, vamos lá.
Estou desenvolvendo uma parte de uma aplicação onde ocorre o seguinte.
recebo uma Lista com um número aleatório de números, porém, podem vir campos vazios nessa lista, então tenho a seguinte regra a seguir.
Se 10% da Lista for vazia, eu invalido a lista inteira, se menos do que 10% for inválido, eu preciso tirar uma média entre os valores anterior e próximo a cada vazio, e preenchê-lo. Segue exemplo:
Lista: {1, 2, 3, 4, 5, (vazio), 7, (vazio), 11, 31, 59, 99, 101}
Como o número de campos vazios é menor do que 10% da lista, eu devo aplicar a regra da média.
Lista: {1, 2, 3, 4, 5,[color=red] 6[/color], 7,[color=red] 9[/color], 11, 31, 59, 99, 101}
Como pode ser visto, nos 2 campos vazios eu apliquei a mesma regra:
Primeiro campo -
anterior = 5
proximo = 7
media = (anterior + proximo) / 2 = 6
O mesmo se aplica para o segundo.
O que eu fiz até agora foi varrer a lista e adicionar os índices dos campos inválidos em uma outra lista, caso mais de 10% seja inválido eu removo a list toda, senão aplico as regras, utilizando os índices como referência.
Gostaria de saber se alguém consegue ver uma maneira melhor de resolver esse problema, algo com uma performance melhor, talvez.
Obrigado!