Javascript Program to Efficiently compute sums of diagonals of a matrix
Last Updated :
31 May, 2022
Given a 2D square matrix, find the sum of elements in Principal and Secondary diagonals. For example, consider the following 4 X 4 input matrix.
A00 A01 A02 A03
A10 A11 A12 A13
A20 A21 A22 A23
A30 A31 A32 A33
The primary diagonal is formed by the elements A00, A11, A22, A33.
- Condition for Principal Diagonal: The row-column condition is row = column.
The secondary diagonal is formed by the elements A03, A12, A21, A30.
- Condition for Secondary Diagonal: The row-column condition is row = numberOfRows – column -1.
Examples :
Input :
4
1 2 3 4
4 3 2 1
7 8 9 6
6 5 4 3
Output :
Principal Diagonal: 16
Secondary Diagonal: 20
Input :
3
1 1 1
1 1 1
1 1 1
Output :
Principal Diagonal: 3
Secondary Diagonal: 3
Method 1 (O(n ^ 2) :
In this method, we use two loops i.e. a loop for columns and a loop for rows and in the inner loop we check for the condition stated above:
Javascript
<script>
const MAX = 100;
void printDiagonalSums(mat, n)
{
let principal = 0, secondary = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
if (i == j)
principal += mat[i][j];
if ((i + j) == (n - 1))
secondary += mat[i][j];
}
}
document.write( "Principal Diagonal:" + principal + "<br>" );
document.write( "Secondary Diagonal:" + secondary + "<br>" );
}
let a = [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ],
[ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ];
printDiagonalSums(a, 4);
</script>
|
Output:
Principal Diagonal:18
Secondary Diagonal:18
Time Complexity: O(N*N), as we are using nested loops to traverse N*N times.
Auxiliary Space: O(1), as we are not using any extra space.
Method 2 (O(n) :
In this method we use one loop i.e. a loop for calculating sum of both the principal and secondary diagonals:
Javascript
<script>
function printDiagonalSums(mat,n)
{
let principal = 0, secondary = 0;
for (let i = 0; i < n; i++) {
principal += mat[i][i];
secondary += mat[i][n - i - 1];
}
document.write( "Principal Diagonal:"
+ principal+ "<br>" );
document.write( "Secondary Diagonal:"
+ secondary);
}
let a = [[ 1, 2, 3, 4 ],
[5, 6, 7, 8 ],
[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ]];
printDiagonalSums(a, 4);
</script>
|
Output :
Principal Diagonal:18
Secondary Diagonal:18
Time Complexity: O(N), as we are using a loop to traverse N times.
Auxiliary Space: O(1), as we are not using any extra space.
Please refer complete article on Efficiently compute sums of diagonals of a matrix for more details!
Share your thoughts in the comments
Please Login to comment...