Declaração do problema:
Dado um array de ints, calcule se o array contém em algum lugar um valor seguido no array por esse valor multiplicado por 10. Usamos a convenção de considerar apenas a parte do array que começa no índice dado. A chamada inicial passará no índice como 0.
Exemplos:
public boolean array220(int[] nums, int index)
array220 ({1, 2, 20}, 0) → verdadeiro
array220 ({3, 30}, 0) → verdadeiro
array220 ({3}, 0) → falso **
Eu estou preso com o problema com nenhuma abordagem para resolvê-lo.
for (int i = index; i < nums.length - 1; i++) if (nums[i] * 10 == nums[i + 1]) return true; return false;
Vou te dar um código psuedo para trabalhar.
Let `nums` be my array Let `i` be the starting index Let `index` be `i + 1` for all indices < array's length, iterate Let currNum be `array[index - 1]` if currNum times 10 equals `array[index]` return true increment index return false because we found no numbers that we true
Não vou lhe dar a resposta como um programa em Java, já que várias pessoas já fizeram isso.
Em caso de dúvida, tente escrever o programa em inglês (ou em qualquer outra língua nativa). Se você não puder escrevê-lo com detalhes completos, escreva o que puder e, em seguida, refine em pedaços.
Dado um array de ints, calcule se o array contém em algum lugar um valor seguido no array por esse valor multiplicado por 10. Usamos a convenção de considerar apenas a parte do array que começa no índice dado. A chamada inicial passará no índice como 0.
O que sabemos aqui? Nós temos uma matriz e um índice inicial. Então o que você quer fazer? Talvez isso seja um pouco complicado, então, se estivéssemos fazendo isso manualmente, como você começaria?
Em seguida, refine ainda mais:
Você pode notar que há um pequeno problema com a etapa 2: você não quer fazer um loop até o final. Porque se você fizer isso, não haverá nenhum elemento “próximo” para compará-lo. Então, na verdade, você quer fazer um loop para o penúltimo elemento.
Continue refinando. Em algum momento você pode traduzir diretamente para Java ou qualquer linguagem de programação que você deseja. (Se você não pode fazer este último passo, você precisa adicionar um passo adicional 0: Aprenda a linguagem de programação primeiro)
Resposta recursiva apenas para o inferno … também eu não iria postar isso é não havia respostas válidas. Faça uma tentativa e poste o que você tentou.
public boolean array220(int[] nums, int index){ if(index >= nums.length - 1) return false; if(nums[index] * 10 == nums[index + 1]){ return true; } else { return array220(nums, ++index); } }