Spiral Matrix II | C++ Solution | Simple

Simple C++ Solution

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> graph(n, vector<int>(n, 0));
        for(int i = 0; i < n; i++) graph[0][i] = i+1;
        int row = 1, col = n-1;
        int counter = n+1;
        while(true)
        {
            //down
            for(int i = row; i < n && graph[i][col] == 0; i++) {
                graph[i][col] = counter;
                counter++;
                row++;
            }
            row--;
            col--;
            //left
            for(int i = col; i >= 0 && graph[row][i] == 0; i--)
            {
                graph[row][i] = counter;
                counter++; col--;
            }
            col++;
            row--;
            if(counter == n*n + 1) return graph;
            //up
            for(int i = row; i >= 0 && graph[i][col] == 0; i--)
            {
                graph[i][col] = counter;
                counter++;
                row--;
            }
            row++;
            col++;
            //right
            for(int i = col; i < n && graph[row][i] == 0; i++)
            {
                graph[row][i] = counter;
                counter++; col++;
            }
            col--;
            row++;
            if(counter == n*n + 1) return graph;
        }
        return graph;
    }
};
Comments (0)