Print n x n spiral matrix using O(1) extra space - GeeksforGeeks
Given a number n, print a n x n spiral matrix (of numbers from 1 to n x n) in clockwise direction using O(1) space.
 
 
 
Given a number n, print a n x n spiral matrix (of numbers from 1 to n x n) in clockwise direction using O(1) space.
The solution becomes simple if extra space is allowed. We allocate memory for n x n matrix and for every element starting from n*n to 1, we start filling out matrix in spiral order. To maintain the spiral order four loops are used, each for top, right, bottom and left corner of the matrix.
void printSpiral(int n){    for (int i = 0; i < n; i++)    {        for (int j = 0; j < n; j++)        {            // x stores the layer in which (i, j)th            // element lies            int x;            // Finds minimum of four inputs            x = min(min(i, j), min(n-1-i, n-1-j));            // For upper right half            if (i <= j)                printf("%2d ", (n-2*x)*(n-2*x) - (i-x)                       - (j-x));            // for lower left half            else                printf("%2d ", (n-2*x-2)*(n-2*x-2) + (i-x)                       + (j-x));        }        printf("\n");    }}
For a given number n, print a n x n spiral matrix in counter clockwise direction using O(1) space.
Read full article from Print n x n spiral matrix using O(1) extra space - GeeksforGeeks