Print a 2D Array or Matrix using single loop
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 9Input: 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 <iostream> 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
<script> // JavaScript program for the above approach // Function to print the element // of 2D matrix using single loop function print2DMatrix(arr,rows,columns) { // Iterate over the range // [0, rows*columns] for (let i = 0; i < rows * columns; i++) { // Find row and column index let row = parseInt(i / columns, 10); let col = i % columns; // Print the element at // current index document.write(arr[row][col] + " " ); } } // Given matrix mat[][] let mat = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]; // Dimensions of the matrix let N = mat.length; let M = mat[0].length; // Function Call print2DMatrix(mat, N, M); </script> |
Output:
1 2 3 4 5 6 7 8 9
Time Complexity: O(N * M)
Auxiliary Space: O(1)