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
}
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 j
e a k
forem 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
Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.
Top comments (0)