Shift all matrix elements by 1 in Spiral Order

Given a M x N matrix, shift all its elements by 1 in spiral order.


 
For example,

Input:

[  1  2  3  4 5 ]
[ 16 17 18 19 6 ]
[ 15 24 25 20 7 ]
[ 14 23 22 21 8 ]
[ 13 12 11 10 9 ]

Output:

[ 25  1  2  3 4 ]
[ 15 16 17 18 5 ]
[ 14 23 24 19 6 ]
[ 13 22 21 20 7 ]
[ 12 11 10  9 8 ]


Recommended Read: Print Matrix in Spiral Order
 

The idea is to read elements from the given matrix one by one in spiral order and replace them with their previous elements. To maintain the spiral order four loops are used, each for top, right, bottom and left corner of the matrix.

 
C++ implementation –
 

Download   Run Code

Output:

25  1  2  3 4
15 16 17 18 5
14 23 24 19 6
13 22 21 20 7
12 11 10  9 8

 

Time complexity of above solution is O(M*N).
Auxiliary space used by the program is O(1).

 
Thanks for reading.




Please use ideone or C++ Shell or any other online compiler link to post code in comments.
Like us? Please spread the word and help us grow. Happy coding 🙂
 





Leave a Reply

Notify of
avatar
wpDiscuz