DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Sequência de Equação.

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, vamos analisar um array que guarda uma sequência de números, nosso objetivo é iterá-lo e aplicar uma forma específica que retornará uma ordem específicada. Vejamos agora.

Sequence Equation -

No desafio a seguir dado uma sequência de n inteiros, p(1),p(2)...p(n) onde cada elemento é distinto e 1 <= p(x) <= n, esse xé incremento de 1 para n, encontre um inteiro y de modo que p(p(y)) === x e mantém o histórico de y retornando o array.

Veja o exemplo abaixo:

  • p = [5,2,1,3,4]
  • Cada valor de x entre 1 e 5, o comprimento de sequência é analisado a seguir:

Image description

Vejamos o algoritmo resolvido:

function permutationEquation(p) {
    // Write your code here
    //New array to store result
  const result = new Array(p.length);
  //loop input
  for (const i of p){
    result [p[p[i-1]-1]-1] = i;
  }
  return result
}
Enter fullscreen mode Exit fullscreen mode

A função permutationEquation(p) recebe um array p como argumento, que representa uma permutação dos números de 1 a p.length (ou seja, um rearranjo dos números de 1 a p.length).

A função cria um novo array result com o mesmo comprimento do array de entrada p. Este novo array irá armazenar os valores de p após a aplicação de uma fórmula matemática específica.

Em seguida, a função usa um loop for...of para iterar sobre os elementos do array p. Para cada elemento i em p, a função usa a fórmula p[p[i-1]-1] para calcular um índice j, que é usado para atualizar o valor em result[j-1] para i.

Com isso, concluímos mais um desafio do Resolvendo problemas no HackerRank: . Até a próxima!!!

Top comments (0)