Дана квадратная матрица mat. Верните сумму элементов главной и побочной диагоналей (без двойного учёта центра).
Примеры
Пример 1
Input: mat = [[1,2,3],
[4,5,6],
[7,8,9]]
Output: 25
Пояснение
Сумма диагоналей: 1 + 5 + 9 + 3 + 7 = 25. Элемент mat[1][1] = 5 учитывается один раз.
Пример 2
Input: mat = [[1,1,1,1],
[1,1,1,1],
[1,1,1,1],
[1,1,1,1]]
Output: 8
Пример 3
Input: mat = [[5]]
Output: 5
Решение
Решение
/** * Time Complexity: O(n) - один проход по матрице, где n - размер матрицы * Space Complexity: O(1) - используется только несколько переменных * * Решение: за один проход суммируем элементы обеих диагоналей. * Для нечетной матрицы вычитаем центральный элемент, так как он * учитывается дважды (находится на пересечении диагоналей) */var diagonalSum = function(mat) { const n = mat.length; let sum = 0; for (let i = 0; i < n; i++) { sum += mat[i][i]; // главная диагональ sum += mat[i][n - 1 - i]; // побочная диагональ } // Если матрица нечетная, вычитаем центральный элемент (считали дважды) if (n % 2 === 1) { sum -= mat[Math.floor(n / 2)][Math.floor(n / 2)]; } return sum;};