DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Números Trigêmeos

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje,iremos verificar valores num array que sejam trigêmeos, onde o primeiro. Vejamos mais informações com a explicação detalhada e sua resolução.

Beautiful Triplets -

Dado um array de inteiros a um trigêmeo (a[i],a[j],a[k]) é chamado de Belo. Temos como algumas regras as seguintes:

  • i < j < k
  • a[j] - a[i] = a[k]- a[j] = d

Dada uma sequência crescente de números inteiros e o valor de d, conte o número de belos trigêmeos na sequência.

  • d = valor a combinar
  • arr = a sequência, ordenada em ordem crescente

Queremos receber de volta a quantidade de números trigêmeos belos que podemos ter.

Vejamos o código:

function beautifulTriplets(d, arr) {
    // Write your code here
  let i, j, k;
  let triplets = []

  arr.forEach((x) => {
    i = x
    j = arr.filter((y) => y === i + d)[0]
    k = arr.filter((z) => z === j + d)[0]
    if ((j && k) !== undefined) triplets.push([i, j, k])
  })
  return triplets.length
}
Enter fullscreen mode Exit fullscreen mode

Nas primeiras linhas, duas variáveis são declaradas (i, j, k) e um array vazio chamado triplets é criado. Logo após isso criamos uma estrutura que irá iterar cada elemento do array arr usando forEach que irá executar uma função em cada elemento.

O valor atual do elemento é x, e ele será atribuído a i. Na linha j iremos passar um filtro dentro dos parâmetros do array arr em busca de um elemento que seja equivalente a condição y === i + d. Ou seja, busca um elemento y que seja igual ao valor atual mais o valor de d. Ao final o elemento encontrado será atribuído a j. O mesmo acontece no caso de k.

Depois criamos um if onde se os valores atribuídos a je a kforem diferentes de undefined significa que encontramos uma sequência "bela" e um novo array com esses três valores é adicionado ao array triplets. E para finalizar retornamos o valor de triplets ou melhor, seu comprimento que será o número de possibilidades de trigêmeos "belos".

O resultante será :

7 3
1 2 4 5 7 8 10

input: 3
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.

Top comments (0)