Open In App

Java Program to Compute the Sum of Diagonals of a Matrix

Last Updated : 18 Jan, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

For a given 2D square matrix of size N*N, the task is to find the sum of elements in the Principal and Secondary diagonals. For example, analyze the following 4 × 4 input matrix.

a00 a01 a02 a03
a10 a11 a12 a13
a20 a21 a22 a23
a30 a31 a32 a33

Example:

Input 1 :  6 7 3 4
               8 9 2 1
              1 2 9 6
              6 5 7 2
Output 1 : Principal Diagonal: 26
                 Secondary Diagonal: 14
 

Input 2 : 2 2 2
              1 1 1
             3 3 3
Output 2 :  Principal Diagonal: 6
                  Secondary Diagonal: 6

 

Intuition:

1. The principal diagonal is constituted by the elements a00, a11, a22, a33, and the row-column condition for the principal diagonal is: row = column

2. However, the secondary diagonal is constituted by the elements a03, a12, a21, a30, and the row-column condition for the Secondary diagonal is: row + column = N – 1

Naive approach: Use two nested loop to iterate over 2D matrix and check for the above condition for principal diagonal and secondary diagonal.

Below is the implementation of the above approach.

Java




// Java Program to Find the Sum of Diagonals of a Matrix
 
// Importing input output classes
import java.io.*;
 
// Main Class
public class GFG {
   
    // To calculate Sum of Diagonals
    static void Sum_of_Diagonals1(int[][] matrix, int N)
    {
        // Declaring and initializing two variables to zero
        // initially for primary and secondary diagonal
        // count
        int Pd = 0, Sd = 0;
   
        // Two Nested for loops for iteration over a matrix
        // Outer loop for rows
        for (int k = 0; k < N; k++) {
   
            // Inner loop for columns
            for (int l = 0; l < N; l++) {
   
                // Condition for the principal
                // diagonal
                if (k == l)
                    Pd += matrix[k][l];
   
                // Condition for the secondary diagonal
                if ((k + l) == (N - 1))
                    Sd += matrix[k][l];
            }
        }
   
        // Print and display the sum of primary diagonal
        System.out.println("Sum of Principal Diagonal:"
                           + Pd);
        // Print and display the sum of secondary diagonal
        System.out.println("Sum of Secondary Diagonal:"
                           + Sd);
    }
 
   
    // Main driver method
    static public void main(String[] args)
    {
 
        // Input integer array
        // Custom entries in an array
        int[][] b = { { 8, 2, 13, 4 },
                      { 9, 16, 17, 8 },
                      { 1, 22, 3, 14 },
                      { 15, 6, 17, 8 } };
 
        // Passing the array as an argument to the
        // function defined above
        Sum_of_Diagonals1(b, 4);
       
    }
}


Output

Sum of Principal Diagonal:35
Sum of Secondary Diagonal:58

Time complexity: O(N2)
Auxiliary space: O(1)

Efficient approach: The idea to find the sum of values of principal diagonal is to iterate to N and use the value of matrix[row][row] for the summation of principal diagonal and to find the sum of values of secondary diagonal is to use the value of matrix[row][N – (row + 1)] for summation.

Below is the implementation of the above approach.

Java




// Java Program to Find the Sum of Diagonals of a Matrix
 
// Importing input output classes
import java.io.*;
 
// Main Class
public class GFG {
   
    // To calculate Sum of Diagonals
    static void Sum_of_Diagonals(int[][] matrix, int N)
    {
        // Declaring and initializing two variables to zero
        // initially for primary and secondary diagonal
        // count
        int Pd = 0, Sd = 0;
        for(int i=0; i<N; i++)
        {
              // Since for primary diagonal sum the value of
            // row and column are equal
              Pd += matrix[i][i];
           
            // For secondary diagonal sum values of i'th index
            // and j'th index sum is equal to n-1 at each
            // stage of matrix
              Sd += matrix[i][N-(i+1)];
        }
         
       
        // Print and display the sum of primary diagonal
        System.out.println("Sum of Principal Diagonal:"
                           + Pd);
        // Print and display the sum of secondary diagonal
        System.out.println("Sum of Secondary Diagonal:"
                           + Sd);
    }
 
   
    // Main driver method
    static public void main(String[] args)
    {
 
        // Input integer array
        // Custom entries in an array
        int[][] b = { { 8, 2, 13, 4 },
                      { 9, 16, 17, 8 },
                      { 1, 22, 3, 14 },
                      { 15, 6, 17, 8 } };
 
        // Passing the array as an argument to the
        // function defined above
        Sum_of_Diagonals(b, 4);
    }
}


Output

Sum of Principal Diagonal:35
Sum of Secondary Diagonal:58

Time complexity: O(N)
Auxiliary space: O(1)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads