Skip to content

Conversation

@GabrielNNS
Copy link

Criei uma classe chamada MultiplyArray para ser responsável pela lógica do exercício, que basicamente fica em volta de 2 FOR e 1 IF, o primeiro FOR pega o índice em evidencia, o segundo for percorre o Array multiplicando os valores e o IF garante que o valor do índice em evidencia não entre na multiplicação.

@giuseppelopes
Copy link
Owner

Tentar fazer com no maximo UM FOR/FOREACH;
Acho que nao precisa de IF
PODE usar matrizes mais elaboradas do próprio Java, ou List, ou Map, o que quiser.. nao precisa se prender só no array dos tipo primarios

@GabrielNNS
Copy link
Author

A solução onde usava stream.reduce e divisão de fato ficava mais compacta, porem abria brecha para o caso de ter algum valor zero no array de inteiros de entrada. Então parti para uma solução que cobre todos os cenários que pensei e acredito que é considerado O(n), mesmo tendo 2 FORs (um para prefix e outro para suffix), cada um percorre 1 única fez e faz 1 única operação, assim não gera múltiplas operações/iteração em "cascata".

Fiz testes para cobrir os cenários de zero também.

Entrada = [2, 0, 3]
Resultado [0, 6, 0]

Entrada = [2, 0, 0]
Resultado = [0, 0, 0]

A escolha de Long para saida é para cobrir entradas de Arrays grandes, como se trata de multiplicação é relativamente fácil alcançar o valor máximo do Integer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants