Open In App

Javascript Program to Find difference between sums of two diagonals

Last Updated : 10 Sep, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Given a matrix of n X n. The task is to calculate the absolute difference between the sums of its diagonal.

Examples: 

Input : mat[][] = 11 2 4
4 5 6
10 8 -12
Output : 15
Sum of primary diagonal = 11 + 5 + (-12) = 4.
Sum of primary diagonal = 4 + 5 + 10 = 19.
Difference = |19 - 4| = 15.


Input : mat[][] = 10 2
4 5
Output : 7

Calculate the sums across the two diagonals of a square matrix. Along the first diagonal of the matrix, row index = column index i.e mat[i][j] lies on the first diagonal if i = j. Along the other diagonal, row index = n - 1 - column index i.e mat[i][j] lies on the second diagonal if i = n-1-j. By using two loops we traverse the entire matrix and calculate the sum across the diagonals of the matrix.

Below is the implementation of this approach: 

JavaScript
// Javascript Code for Find difference between sums
// of two diagonals

function difference(arr, n) {
    // Initialize sums of diagonals
    let d1 = 0, d2 = 0;

    for (let i = 0; i < n; i++) {
        for (let j = 0; j < n; j++) {
            // finding sum of primary diagonal
            if (i == j)
                d1 += arr[i][j];

            // finding sum of secondary diagonal
            if (i == n - j - 1)
                d2 += arr[i][j];
        }
    }

    // Absolute difference of the sums
    // across the diagonals
    return Math.abs(d1 - d2);
}

/* Driver program to test above function */

let n = 3;

let arr =
    [
        [11, 2, 4],
        [4, 5, 6],
        [10, 8, -12]
    ];

console.log(difference(arr, n));

// This code is contributed Bobby

Output
15

Complexity Analysis:

  • 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.

We can optimize above solution to work in O(n) using the patterns present in indexes of cells. 

JavaScript
// JAVA SCRIPT  Code for Find difference between sums
// of two diagonals

function difference(arr, n) {

    // Initialize sums of diagonals
    let d1 = 0, d2 = 0;

    for (let i = 0; i < n; i++) {
        d1 += arr[i][i];
        d2 += arr[i][n - i - 1];
    }

    // Absolute difference of the sums
    // across the diagonals
    return Math.abs(d1 - d2);
}

/* Driver program to test above function */

let n = 3;
let arr = [[11, 2, 4],
[4, 5, 6],
[10, 8, -12]];

console.log(difference(arr, n));
// This code is contributed by sravan kumar Gottumukkala

Output
15

Complexity Analysis:

  • 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 Find difference between sums of two diagonals for more details!


Next Article
Practice Tags :

Similar Reads