Thursday, March 17, 2022

Spirally traversing a matrix GFG Solution

Spirally traversing a matrix 
Medium 

Given a matrix of size r*c. Traverse the matrix in spiral form.

Example 1:

Input:
r = 4, c = 4
matrix[][] = {{1, 2, 3, 4},
           {5, 6, 7, 8},
           {9, 10, 11, 12},
           {13, 14, 15,16}}
Output: 
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
Explanation:

Example 2:

Input:
r = 3, c = 4  
matrix[][] = {{1, 2, 3, 4},
           {5, 6, 7, 8},
           {9, 10, 11, 12}}
Output: 
1 2 3 4 8 12 11 10 9 5 6 7
Explanation:
Applying same technique as shown above, 
output for the 2nd testcase will be 
1 2 3 4 8 12 11 10 9 5 6 7.


Your Task:
You dont need to read input or print anything. Complete the function spirallyTraverse() that takes matrix, r and c as input parameters and returns a list of integers denoting the spiral traversal of matrix. 

Expected Time Complexity: O(r*c)
Expected Auxiliary Space: O(r*c), for returning the answer only.

Constraints:
1 <= r, c <= 100
0 <= matrixi <= 100


Practice Here:

Spirally traversing a matrix | Practice | GeeksforGeeks

Solution :

class Solution

{   

    public: 

    //Function to return a list of integers denoting spiral traversal of matrix.

    vector<int> spirallyTraverse(vector<vector<int> > matrix, int r, int c) 

    {

        vector<int> v;

        int minRow =0;

        int maxRow = r-1;

        int maxCol = c-1;

        int minCol = 0;

        int i = minRow;

        int j = minCol;

        while(minRow<=maxRow||minCol<=maxCol){

            //cout<<i<<" j:"<<j<<endl;

            while((j<=maxCol&&j>=minCol)&&(i<=maxRow&&i>=minRow))

            v.push_back(matrix[i][j++]);

            minRow++;

            j--;

            i++;

         //cout<<i<<" j:"<<j<<endl;

            while((j<=maxCol&&j>=minCol)&&(i<=maxRow&&i>=minRow))

            v.push_back(matrix[i++][j]);

            maxCol--;

            j--;

            i--;

        //cout<<i<<" j:"<<j<<endl;

            while((j<=maxCol&&j>=minCol)&&(i<=maxRow&&i>=minRow))

                v.push_back(matrix[i][j--]);

                maxRow--;

            i--; 

            j++;

         //cout<<i<<" j:"<<j<<endl;

            while((j<=maxCol&&j>=minCol)&&(i<=maxRow&&i>=minRow))

              v.push_back(matrix[i--][j]);

              minCol++;

          j++;

          i++;

          

        }

        return v;

    }

};


No comments:

Implement stsStr Leetcode solution

  28.   Implement strStr() Easy Implement  strStr() . Given two strings  needle  and  haystack , return the index of the first occurrence of...