DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Divisíveis por uma soma de arrays

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.
Enter fullscreen mode Exit fullscreen mode

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);

}
Enter fullscreen mode Exit fullscreen mode

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.
Enter fullscreen mode Exit fullscreen mode

Com isso,finalizamos mais uma edição. Até a próxima!!!

Top comments (0)