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)
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);
}
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
Assim finalizamos mais um desafio deste HackerRank. Até a próxima!!!
Top comments (0)