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!
