# Java Program to Efficiently compute sums of diagonals of a matrix

• Last Updated : 11 Jan, 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.

1. Condition for Principal Diagonal: The row-column condition is row = column.
The secondary diagonal is formed by the elements A03, A12, A21, A30.
2. 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:

## Java

 `// A simple java program to find ` `// sum of diagonals ` `import` `java.io.*; ` ` `  `public` `class` `GFG { ` ` `  `    ``static` `void` `printDiagonalSums(``int` `[][]mat, ` `                                         ``int` `n) ` `    ``{ ` `        ``int` `principal = ``0``, secondary = ``0``; ` `        ``for` `(``int` `i = ``0``; i < n; i++) { ` `            ``for` `(``int` `j = ``0``; j < n; j++) { ` `     `  `                ``// Condition for principal ` `                ``// diagonal ` `                ``if` `(i == j) ` `                    ``principal += mat[i][j]; ` `     `  `                ``// Condition for secondary ` `                ``// diagonal ` `                ``if` `((i + j) == (n - ``1``)) ` `                    ``secondary += mat[i][j]; ` `            ``} ` `        ``} ` `     `  `        ``System.out.println(``"Principal Diagonal:"` `                                    ``+ principal); ` `                                     `  `        ``System.out.println(``"Secondary Diagonal:"` `                                    ``+ secondary); ` `    ``} ` ` `  `    ``// Driver code ` `    ``static` `public` `void` `main (String[] args) ` `    ``{ ` `         `  `        ``int` `[][]a = { { ``1``, ``2``, ``3``, ``4` `}, ` `                      ``{ ``5``, ``6``, ``7``, ``8` `},  ` `                      ``{ ``1``, ``2``, ``3``, ``4` `}, ` `                      ``{ ``5``, ``6``, ``7``, ``8` `} }; ` `                     `  `        ``printDiagonalSums(a, ``4``); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

Output:

```Principal Diagonal:18
Secondary Diagonal:18```

This code takes O(n^2) time and O(1) auxiliary 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:

## Java

 `// An efficient java program to find ` `// sum of diagonals ` `import` `java.io.*; ` ` `  `public` `class` `GFG { ` ` `  `    ``static` `void` `printDiagonalSums(``int` `[][]mat, ` `                                        ``int` `n) ` `    ``{ ` `        ``int` `principal = ``0``, secondary = ``0``;  ` `        ``for` `(``int` `i = ``0``; i < n; i++) { ` `            ``principal += mat[i][i]; ` `            ``secondary += mat[i][n - i - ``1``];  ` `        ``} ` `     `  `        ``System.out.println(``"Principal Diagonal:"` `                                   ``+ principal); ` `                                    `  `        ``System.out.println(``"Secondary Diagonal:"` `                                   ``+ secondary); ` `    ``} ` `     `  `    ``// Driver code ` `    ``static` `public` `void` `main (String[] args) ` `    ``{ ` `        ``int` `[][]a = { { ``1``, ``2``, ``3``, ``4` `}, ` `                      ``{ ``5``, ``6``, ``7``, ``8` `},  ` `                      ``{ ``1``, ``2``, ``3``, ``4` `}, ` `                      ``{ ``5``, ``6``, ``7``, ``8` `} }; ` `     `  `        ``printDiagonalSums(a, ``4``); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

Output :

```Principal Diagonal:18
Secondary Diagonal:18```

This code takes O(n) time and O(1) auxiliary space
Please refer complete article on Efficiently compute sums of diagonals of a matrix for more details!

My Personal Notes arrow_drop_up
Recommended Articles
Page :