Olá, seja bem vindo a mais uma etapa do Resolvendo problemas no Hacker-Rank,nessa sessão iremos resolver casos de valores que juntos podem ser divisíveis por outro.
Divisible Sum Pairs -
Esse algoritmo pega dois números em array e pega o primeiro que vale index i e o segundo que vale index j.
Com as seguintes regras:
- O index [i] tem que ser menor que o j.
- Eles eles tem que ser divisíveis por k.
int n: o comprimento do array arr
int ar[n]: um array de inteiros
int k: o inteiro divisor
Vejamos um exemplo:
ar = [1,2,3,4,5,6]
k = 5
// 3 pares estão dentro dos parâmetros:[1,4],[2,3],[6,4]
// Visto que os 3 casos acima são multiplos de k =5,pois a soma de [1,4] e [2,3] dão resultado 5 e [6,4] entra como múltiplo do valor k também.
Vejamos agora o raciocínio desse código:
function divisibleSumPairs(n, k, ar) {
return ar.reduce((acc, cur, index) =>
acc + ar.slice(index + 1).filter(j => (cur + j) % k === 0).length, 0);
}
Nesse código, usamos a função reduce para iterar sobre o array ar e acumular o número de pares que são divisíveis por k. Para cada elemento do array ar, usamos o método slice para criar um novo array que contém apenas os elementos que estão à frente dele e, em seguida, filtramos esse array para manter apenas os elementos que, somados ao elemento atual, são divisíveis por k.
Com isso, o resultado será:
6 3 // 6 =n e 3 = k
1 3 2 6 1 2
5// possibilidades.
Com isso,finalizamos mais uma edição. Até a próxima!!!
Top comments (0)