Open In App

Javascript Program to Print matrix in antispiral form

Improve
Improve
Like Article
Like
Save
Share
Report

Given a 2D array, the task is to print matrix in anti spiral form:
Examples: 
 

spiral

Output: 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
 

Input : arr[][4] = {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 :arr[][6] = {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

 

The idea is simple, we traverse matrix in spiral form and put all traversed elements in a stack. Finally one by one elements from stack and print them. 
 

Javascript




<script>
 
// Javascript Code for Print matrix in antispiral form
     
    function antiSpiralTraversal(m,n,a)
    {
        let i, k = 0, l = 0;
         
        /*  k - starting row index
            m - ending row index
            l - starting column index
            n - ending column index
            i - iterator  */
        let stk=[];
        
        while (k <= m && l <= n)
        {
            /* Print the first row from the remaining
             rows */
            for (i = l; i <= n; ++i)
                stk.push(a[k][i]);
            k++;
        
            /* Print the last column from the remaining
            columns */
            for (i = k; i <= m; ++i)
                stk.push(a[i][n]);
            n--;
        
            /* Print the last row from the remaining
            rows */
            if ( k <= m)
            {
                for (i = n; i >= l; --i)
                    stk.push(a[m][i]);
                m--;
            }
        
            /* Print the first column from the remaining
            columns */
            if (l <= n)
            {
                for (i = m; i >= k; --i)
                    stk.push(a[i][l]);
                l++;
            }
        }
        
        while (stk.length!=0)
        {
            document.write(stk[stk.length-1] + " ");
            stk.pop();
        }
     
    }
     
    /* Driver program to test above function */
    let mat = [[1, 2, 3, 4, 5],
       [6, 7, 8, 9, 10],
       [11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20]];
    antiSpiralTraversal(mat.length - 1, mat[0].length - 1,
                                                       mat);
     
    // This code is contributed by avanitrachhadiya2155
</script>


Output: 
 

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

Time complexity: O(m*n) where m is no of rows and n is no of columns of a given matrix

Auxiliary Space: O(n)

Please refer complete article on Print matrix in antispiral form for more details!



Last Updated : 07 Aug, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads