📝 Descrição

Given a square matrix, calculate the absolute difference between the sums of its diagonals.

📌 Exemplos

Examplo 1:

123
456
989
  • A diagonal principal: 1, 5, 9
  • A diagonal secundária: 3, 5, 9

A diferença absoluta é |15 - 17| = 2

✅ Casos de teste

Caso 1

Entrada

3 11 2 4 4 5 6 10 8 -12

Saída

15

🚀 Como resolvi?

Pô, pra resolver esse problema, a gente precisa conseguir somar os valores da diagonal principal e da diagonal secundária. Pra isso, vale lembrar como funciona a indexação em matrizes.

j=1j=2j=3
i=1a₁₁a₁₂a₁₃
i=2a₂₁a₂₂a₂₃
i=3a₃₁a₃₂a₃₃

A diagonal principal da matriz acima é:

j=1j=2j=3
i=1a₁₁a₁₂a₁₃
i=2a₂₁a₂₂a₂₃
i=3a₃₁a₃₂a₃₃

Os elementos dessa diagonal seguem o formato a[i][i]

Já a diagonal secundária é:

j=1j=2j=3
i=1a₁₁a₁₂a₁₃
i=2a₂₁a₂₂a₂₃
i=3a₃₁a₃₂a₃₃

Os elementos pertencentes a ela seguem o formato a[i][i-n-1]

Com isso em mente, dá pra acessar os dois conjuntos de valores, somar tudo e, por fim, retornar o valor absoluto da diferença entre essas somas.

🛠️ Implementação

def diagonalDifference(arr, n) -> int:
    left_to_right_diagonal = [arr[i][i] for i in range(n)]
    right_to_left_diagonal = [arr[i][n-i-1] for i in range(n)]
    return abs(sum(left_to_right_diagonal) - sum(right_to_left_diagonal))

🧠 O que aprendemos?

Dividir o problema em problema menores sempre nos ajudará.