###
Print Matrix Diagonally. OR

Loop diagonally through two dimensional array. OR

Traverse an array diagonally. OR

Print elements of Matrix in Diagonal order.

Given a Matrix / 2D array, Print all elements of Matrix in Diagonal order. Lets understand Diagonal order of Matrix graphically.

### Algorithm

Lets see algorithm for printing Matrix diagonally.

**If we observe the Matrix, there are 2 set of Diagonals,**

- rowCount diagonals
- (colCount - 1) diagonals.

**We will first print the rowCount diagonals and then print the remaining columnCount-1 diagonals.**

**For printing**

**rowCount diagonals**

**:**- Iterate "r" from 0 till rowCount
- For each row, initialize "row=r" and "col=0" iterate till (row >=0 && col<collength )
- Print matrix[row][col]
- Decrement row-- and Increment col++

**For printing**

**(colCount-1) diagonals**

**:**- Iterate "c" from 1 till colCount
- For each row, initialize "row=rowCount" and "col=c" iterate till (row >=0 && col < collength)
- Print matrix[row][col]
- Decrement row-- and Increment col++

###

Java Program to Print Matrix Diagonally.

package matrix; /* Input: {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}, {17, 18, 19, 20}, Output: 1 5 2 9 6 3 13 10 7 4 17 14 11 8 18 15 12 19 16 20 */ public class PrintMatrixDiagonally { public static void main(String[] args) { new PrintMatrixDiagonally(); } public PrintMatrixDiagonally() { int[][] matrix = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}, {17, 18, 19, 20} }; printMatrixDiagonally(matrix); } private void printMatrixDiagonally(int[][] matrix){ int rowCount = matrix.length; int columnCount = matrix[0].length; for (int r = 0; r < rowCount; r++) { for (int row = r, col = 0; row >= 0 && col < columnCount; row--, col++) { System.out.print(matrix[row][col] + " "); } System.out.println(); } for (int c = 1; c < columnCount; c++) { for (int row = rowCount-1, col = c; row >= 0 && col < columnCount; row--, col++) { System.out.print(matrix[row][col] + " "); } System.out.println(); } } }

### You may also like to see

#### Compress a given string in-place and with constant extra space.

#### Check whether a given string is an interleaving of String 1 and String 2.

#### Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest transformation sequence from beginWord to endWord.

#### Serialize and Deserialize a Binary Tree

#### Advanced Multithreading Interview Questions In Java

**Enjoy !!!!**

**If you find any issue in post or face any error while implementing, Please comment.**

## Post a Comment