Problem of the day
You are given a 2-D array 'MATRIX' of dimensions N x M, of integers. You need to return the spiral path of the matrix.
Example Of Spiral Path:
The first line contains an integer 'T' which denotes the number of test cases or queries to be run. Then the test cases follow.
The first line of each test case contains two single space-separated integers 'N' and 'M', denoting the number of rows and columns respectively.
The next 'N' lines, each contains 'M' single space-separated integers representing the elements in a row of the matrix.
Output format :
For each test case/query, print the spiral path of the given matrix.
The output for every test case will be printed in a separate line.
Note:
You do not need to print anything, it has already been taken care of. Just implement the given function.
1 <= T <= 5
1 <= N <= 10 ^ 2
1 <= M <= 10 ^ 2
-10 ^ 9 <= MATRIX[ i ][ j ] <= 10 ^ 9
Time Limit: 1sec.
2
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
3 6
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11
The spiral path for the test case 2 is as shown below:
2
1 1
4
1 5
1 2 3 4 5
4
1 2 3 4 5
In the first test case, there is only one element in the matrix, so the spiral path is only that element.
In the second test case, there is only one row or 1-D matrix, so the spiral path is only the single traversal of the matrix.
Can we print the boundary of the Matrix recursively?
For each boundary, we will use the 4 for loops. Now the problem is reduced to print the remaining submatrix which is handled with the help of recursion. Keep track of new dimensions(rows and columns) of the current submatrix which are passed with the help of parameters in each recursion call.
Algorithm:
spiralPrint(matrix[][], R, C, rows, cols):
O(N * M), where ‘N’ is the number of rows and ‘M’ is the number of columns of the matrix.
We are traversing the entire matrix of N * M elements. Thus, the overall complexity is O(N * M).
O(max(N, M)), where ‘N’ is the number of rows and ‘M’ is the number of columns of the matrix.
In the worst case, extra space will be required by the recursive stack and there can be a maximum of row or columns number of recursive calls at a time in the stack. Thus, the overall space complexity is O(max(N, M)).