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).
Please ❤️ it and share it your with friends or colleagues. Spread the knowledge.
Thats all for now. Keep learning and have faith in Javascript❤️
Top comments (1)
Now do the same but with n * m matrix