Untitled

 avatar
unknown
plain_text
10 months ago
738 B
10
Indexable
class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int>ans;
        vector<vector<int>>direction = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
        int c_size = matrix[0].size();
        int r_size = matrix.size();
        if(!c_size || !r_size)
            return ans;
        vector<int>step{c_size, r_size-1};
        int dir = 0;
        int r = 0, c = -1;
        while(step[dir%2]){
            for(int i = 0; i < step[dir%2]; i++){
                r += direction[dir][0];
                c += direction[dir][1];
                ans.push_back(matrix[r][c]);
            }
            step[dir%2]--;
            dir = (dir+1)%4;
        }
        return ans;
    }
};
Editor is loading...
Leave a Comment