DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Diferença mínima dentro de Arrays.

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje,vamos inserir a diferença mpinima de valores dentro de um array, baseado na quantidade de pares existentes. Vejamos mais informações com a explicação detalhada e sua resolução.

Minimum Distances -

A distância entre dois valores de matriz é o número de índices entre eles. Dado a, encontre a distância mínima entre qualquer par de elementos iguais na matriz. Se esse valor não existir, retorne -1. Vejamos um exemplo:

  • a = [3,2,1,2,3]

Temos dois pares neste array (2 e 3), a diferença do índice i= 0 e j = 4. Então a diferença de d é [i,j] = j-i = 4. No caso de do índice de 2, a diferença é i= 1 e j= 3, fazendo assim j-i = 2.

  • Nosso objetivo é retornar o menor valor possível e caso não seja possível, retornar -1.

Vejamos o código:

function minimumDistances(a) {
    // Write your code here
  let result = [];

    for (let i = 0; i < a.length; i++) {
      for (let j = i + 1; j < a.length; j++) {
        if (a[i] === a[j]) {
          result.push(Math.abs(i - j))
        }
      }
    }
    if (result.length === 0) {
      return -1
    }
    else {
      return Math.min(...result)
    }
}
Enter fullscreen mode Exit fullscreen mode

Criamos uma variável chamada resultque irá receber um array vazio até então. Logo após isso, iniciamos um loop com um index chamado i que inicia em 0 e enquanto for menor que o comprimento de a(onde está reservado todos os valores do array), ele deve adicionar mais um.

Fazemos o mesmo agora declarando um index chamado j que irá receber o valor de i+ 1, enquanto ele for menor que o comprimento de a, e também adicionará mais um. Após isso criamos um ifque caso o a[i] seja igual ao a[j], iremos lançar o valor absoluto em result com a diferença entre eles.

E caso o valor seja igual a 0, retornaremos -1, fora disso, o menor valor de diferença.

O resultado será:

6
7 1 3 4 1 7

input: 3
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)