## DEV Community

Nitin Sijwali

Posted on • Updated on

# Javascript: Sum diagonal and counter diagonal elements of n * n matrix

Given a square matrix of size n, calculate the sum of diagonal and counter diagonal elements.
where n > 1

``````Example:
[
[1, 8, 7],
[2, 9, 6],
[3, 4, 5]
]
diagonal = positions [0][0] + [1][1]+ [2][2] => 1+9+5 =15,
counterDiagonal = positions [0][2] + [1][1]+ [3][0] => 7+9+3 =19
``````

Let's try first with brute force method then will optimise it.

``````function sumOfDiagonals(matrix) {
const len = matrix.length;
let diagonalSum = 0;
let counterDiagonalSum = 0;
for (let i = 0; i < len; i++) {
for (let k = 0; k < len; k++) {
if (i === k) {
diagonalSum += matrix[i][k];
}
if (i + k == len - 1) {
counterDiagonalSum += matrix[i][k];
}

}
}

console.log("sum of diagonal elements --- ", diagonalSum)
console.log("sum of counter diagonal elements ---", counterDiagonalSum)
}
sumOfDiagonals([
[1, 8, 7],
[2, 9, 6],
[3, 4, 5]
]);
``````

The solution above works well but the time and space complexity are O(n^2) time and O(1) where n is the number of elements our loop iterated and power 2 is for the two loops that we used.

Let's try the optimised solution:

``````function sumOfDiagonals(matrix) {
const len = matrix.length;
let diagonalSum = 0;
let counterDiagonalSum = 0;
for (let i = 0; i < len; i++) {
diagonalSum += matrix[i][i];
counterDiagonalSum += matrix[i][len - i - 1];
}

console.log("sum of diagonal elements --- ", diagonalSum)
console.log("sum of counter diagonal elements ---", counterDiagonalSum)
}
sumOfDiagonals([
[1, 8, 7],
[2, 9, 6],
[3, 4, 5]
]);
``````

Now the time complexity has been reduced to O(n).