DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank:Somando diagonais em uma matrix

Continuando a série: Resolvendo problemas no HackerRank , hoje nós trataremos de uma resolução que embora não seja difícil, exige uma análise antes de botar a mão na massa,pois caso contrário poderá se confundir, você está preparado? Aliás,já existem alguns artigos anteriores que vale a pena dar uma olhada bem no meu perfil. Vamos iniciar!!!

Diagonal Difference -

No episódio de hoje, nos é ordenado que façamos a soma entre as diaogonais de uma matrix dentro de uma outra matrix principal: da esquerda pra direita como principal, e da direita pra esquerda como secundária logo após diminuir a primeira matrix. Se compreendeu, meus mais sinceros parabéns, mas caso não, fique tranquilo e veja de maneira clara o que nos é pedido.

Pré-Código:

//receber uma matrix
//somar diagonais
//retornar diferenca absoluta

[//elemento:0,1,2
  //       [1,2,3] //lista:0
  //       [4,5,6] //1
  //      [9,8,9] //2
]
// (0,0),(1,1),(2,2)
// (0,2,),(1,1),(2,0)
Enter fullscreen mode Exit fullscreen mode

Antes de iniciar a resolução desse problema, é prudente fazer uma análise do que precisamos fazer primeiro, antes de começar a escrever para o computador.

Vejamos a resolução ->

function diagonalDifference(arr) {
    // Write your code here
    const size = arr.length;

    let mainDiagSum = 0;
    let secDiagSum = 0;

    for (let i = 0; i < size; i++) {
    mainDiagSum += arr[i][i];
    secDiagSum += arr[i][size - i -1];
  }

  return Math.abs(mainDiagSum - secDiagSum);
}
Enter fullscreen mode Exit fullscreen mode

No caso acima, pra resolver, fiz uma const que puxa do array de números em matrix,seu comprimento que vale 3. Logo após isso declarei as variáveis que irão puxar as diagonais que iríamos usar a frente.

Criando um laço for e pegando o index i que se menor que size(que representa o comprimento), depois colocamos as ações desejadas. A variável mainDiagSum vai adicionar uma dupla e index que iniciará com 0, mas que consequentemente auementará 1, em cada, exatamenta posição desejada da MainDiagonal.

Já o secDiagSum terá um raciocínio igual, mas que se difere. Ele vai adicionar na primeira lista o index i, entretanto a segunda ele fará o valor 3(usar a variável size,ela armazena 3 igualmente) - i -1. No final dando todos os valores desejados, e podendo ver isso ao usar o return com métod Math.abs que pega o valor absoluto e subtraindo os valores.

RESULTADO:

//size:3
11 2 4
4 5 6
10 8 -12
// valores que serão pegos [11,5,-12] 11 + 5 - 12 = 4
// valores que serão pegos [4,5,10]  4 + 5 + 10 = 19


//valor subtraído = 15, pois 4-19 = -15, mas ele deseja o valor absoluto = 15 
Enter fullscreen mode Exit fullscreen mode

Assim finalizamos mais um desafio deste HackerRank. Até a próxima!!!

Top comments (0)