Problem Statement

Given an m x n matrix, return all elements of the matrix in spiral order.

Example 1:

Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [1,2,3,6,9,8,7,4,5]

Example 2:

Input: 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]

Constraints:

Problem Link

Spiral Matrix - LeetCode

Code

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        
        int m = matrix.size();
        int n = matrix[0].size();
        
        int sr = 0,sc = 0,er = m-1,ec = n-1;
        int dir = 0;
        
        vector<int> res;
        
        while(sr<=er&&sc<=ec)
        {
            if(dir==0)
            {
                for(int i=sc;i<=ec;i++)
                    res.push_back(matrix[sr][i]);
                
                sr++;
            }
            else if(dir==1)
            {
                for(int i=sr;i<=er;i++)
                    res.push_back(matrix[i][ec]);
                
                ec--;
            }
            else if(dir==2)
            {
                for(int i=ec;i>=sc;i--)
                    res.push_back(matrix[er][i]);
                
                er--;
            }
            else if(dir==3)
            {
                for(int i=er;i>=sr;i--)
                    res.push_back(matrix[i][sc]);
                
                sc++;
            }
            dir = (dir+1)%4;
        }
        
        return res;
        
        
    }
};