Given a 2D array, print it in reverse spiral form. We have already discussed Print a given matrix in spiral form. This article discusses how to do the reverse printing. See the following examples.
Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Output: 10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1 Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Output: 11 10 9 8 7 13 14 15 16 17 18 12 6 5 4 3 2 1
PHP
<?php // PHP Code for Print a given // matrix in reverse spiral form $R =3; $C =6; // Function that print matrix // in reverse spiral form. function ReversespiralPrint( $m , $n , array $a ) { // Large array to initialize it // with elements of matrix $b ; // k - starting row index // l - starting column index $k = 0; $l = 0; // Counter for single dimension array // in which elements will be stored $z = 0; // Total elements in matrix $size = $m * $n ; while ( $k < $m && $l < $n ) { // Variable to store // value of matrix. $val ; // Print the first row from // the remaining rows for ( $i = $l ; $i < $n ; ++ $i ) { $val = $a [ $k ][ $i ]; $b [ $z ] = $val ; ++ $z ; } $k ++; // Print the last column from // the remaining columns for ( $i = $k ; $i < $m ; ++ $i ) { // printf("%d ", a[i][n-1]); $val = $a [ $i ][ $n -1]; $b [ $z ] = $val ; ++ $z ; } $n --; // Print the last row from // the remaining rows if ( $k < $m ) { for ( $i = $n -1; $i >= $l ; -- $i ) { // printf("%d ", a[m-1][i]); $val = $a [ $m -1][ $i ]; $b [ $z ] = $val ; ++ $z ; } $m --; } // Print the first column // from the remaining columns if ( $l < $n ) { for ( $i = $m - 1; $i >= $k ; -- $i ) { $val = $a [ $i ][ $l ]; $b [ $z ] = $val ; ++ $z ; } $l ++; } } for ( $i = $size - 1; $i >= 0; -- $i ) { echo $b [ $i ]. " " ; } } // Driver Code $a = array ( array (1, 2, 3, 4, 5, 6), array (7, 8, 9, 10, 11, 12), array (13, 14, 15, 16, 17, 18)); ReversespiralPrint( $R , $C , $a ); // This Code is contributed by mits ?> |
Output:
11 10 9 8 7 13 14 15 16 17 18 12 6 5 4 3 2 1
Time complexity: O(m*n) where m is number of rows and n is number of columns of a given matrix
Auxiliary space: O(1) as using constant variables
Please refer complete article on Print a given matrix in reverse spiral form for more details!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!