Print a 2D Array or Matrix using single loop

• Difficulty Level : Medium
• Last Updated : 08 Jun, 2021

Given a matrix mat[][] of N * M dimensions, the task is to print the elements of the matrix using a single for loop.

Examples:

Input: mat[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
Output: 1 2 3 4 5 6 7 8 9

Input: mat[][] = {{7, 9}, {10, 34}, {12, 15}}
Output: 7 9 10 34 12 15

Approach: To traverse the given matrix using a single loop, observe that there are only N * M elements. Therefore, the idea is to use modulus and division to switch the rows and columns while iterating a single loop over the range [0, N * M]. Follow the steps below to solve the given problem:

• Iterate a loop over the range [0, N * M] using the variable i.
• At each iteration, find the index of the current row and column as row = i / M and column = i % M respectively.
• In the above steps, print the value of mat[row][column] to get the value of the matrix at that index.

Below is the implementation of the above approach:

C++

 `// C++ program for the above approach``#include ``using` `namespace` `std;` `// Function to print the element``// of 2D matrix using single loop``void` `print2DMatrix(``int` `arr[][3],``                   ``int` `rows, ``int` `columns)``{``    ` `    ``// Iterate over the range``    ``// [0, rows*columns]` `    ``for``(``int` `i = 0; i < rows * columns; i++)``    ``{``        ` `        ``// Find row and column index``        ``int` `row = i / columns;``        ``int` `col = i % columns;` `        ``// Print the element at``        ``// current index``        ``cout << arr[row][col] << ``" "``;``    ``}``}` `// Driver Code``int` `main()``{``    ` `    ``// Given matrix mat[][]``    ``int` `mat[][3] = { { 1, 2, 3 },``                     ``{ 4, 5, 6 },``                     ``{ 7, 8, 9 } };` `    ``// Dimensions of the matrix``    ``int` `N = ``sizeof``(mat) / ``sizeof``(mat[0]);``    ``int` `M = ``sizeof``(mat[0]) / ``sizeof``(mat[0][0]);` `    ``// Function Call``    ``print2DMatrix(mat, N, M);``    ``return` `0;``}` `// This code is contributed by akhilsaini`

Java

 `// Java Program for the above approach` `import` `java.io.*;` `class` `GFG {` `    ``// Function to print the element``    ``// of 2D matrix using single loop``    ``public` `static` `void` `print2DMatrix(``        ``int` `arr[][], ``int` `rows, ``int` `columns)``    ``{` `        ``// Iterate over the range``        ``// [0, rows*columns]``        ``for` `(``int` `i = ``0``;``             ``i < rows * columns; i++) {` `            ``// Find row and column index``            ``int` `row = i / columns;``            ``int` `col = i % columns;` `            ``// Print the element at``            ``// current index``            ``System.out.print(``                ``arr[row][col] + ``" "``);``        ``}``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``// Given matrix mat[][]``        ``int``[][] mat = { { ``1``, ``2``, ``3` `},``                        ``{ ``4``, ``5``, ``6` `},``                        ``{ ``7``, ``8``, ``9` `} };` `        ``// Dimensions of the matrix``        ``int` `N = mat.length;``        ``int` `M = mat[``0``].length;` `        ``// Function Call``        ``print2DMatrix(mat, N, M);``    ``}``}`

Python3

 `# Python3 program for the above approach` `# Function to print the element``# of 2D matrix using single loop``def` `print2DMatrix(arr, rows, columns):``  ` `  ``# Iterate over the range``  ``# [0, rows*columns]``  ``for` `i ``in` `range``(``0``, rows ``*` `columns):``    ` `    ``# Find row and column index``    ``row ``=` `i ``/``/` `columns``    ``col ``=` `i ``%` `columns` `    ``# Print the element at``    ``# current index``    ``print``(arr[row][col], end ``=` `' '``)``    ` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``  ` `  ``# Given matrix mat[][]``  ``mat ``=` `[ [ ``1``, ``2``, ``3` `],``          ``[ ``4``, ``5``, ``6` `],``          ``[ ``7``, ``8``, ``9` `] ]``  ` `  ``# Dimensions of the matrix``  ``N ``=` `len``(mat)``  ``M ``=` `len``(mat[``0``])` `  ``# Function Call``  ``print2DMatrix(mat, N, M)` `# This code is contributed by akhilsaini`

C#

 `// C# program for the above approach``using` `System;` `class` `GFG{` `// Function to print the element``// of 2D matrix using single loop``public` `static` `void` `print2DMatrix(``int``[, ] arr, ``int` `rows,``                                 ``int` `columns)``{``    ` `    ``// Iterate over the range``    ``// [0, rows*columns]``    ``for``(``int` `i = 0; i < rows * columns; i++)``    ``{``        ` `        ``// Find row and column index``        ``int` `row = i / columns;``        ``int` `col = i % columns;` `        ``// Print the element at``        ``// current index``        ``Console.Write(arr[row, col] + ``" "``);``    ``}``}` `// Driver Code``public` `static` `void` `Main()``{``    ` `    ``// Given matrix mat[][]``    ``int``[, ] mat = { { 1, 2, 3 },``                    ``{ 4, 5, 6 },``                    ``{ 7, 8, 9 } };` `    ``// Dimensions of the matrix``    ``int` `N = mat.GetLength(0);``    ``int` `M = mat.GetLength(1);` `    ``// Function Call``    ``print2DMatrix(mat, N, M);``}``}` `// This code is contributed by akhilsaini`

Javascript

 ``
Output:
`1 2 3 4 5 6 7 8 9`

Time Complexity: O(N * M)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up