Spiral matrix (b)

Leecode brush title

  • Title Description

Given a positive integer n, to generate a 1 n2 contains all of the elements, and the element arranged spirally clockwise order square matrix.

  • Examples

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

  • Code
class Solution {
public:
    vector<vector<int>> generateMatrix(int n) 
    {
        vector<vector<int> > matrix(n, vector<int>(n));
        int k = 1;//从1开始
        int br = 0;
        int er = n-1;//行
        int bc = 0;
        int ec = n-1;//列
        while(1)
        {
            for(int i = bc;i <= ec;i++)
                matrix[br][i] = k++;
            if(++br > er)
                break;
            for(int i = br;i <= er;i++)
                matrix[i][ec] = k++;
            if(--ec < bc)
                break;
            for(int i = ec;i >= bc;i--)
                matrix[er][i] = k++;
            if(--er < br)
                break;
            for(int i = er;i >=br;i--)
                matrix[i][bc] = k++;
            if(++bc > ec)
                break;      
        }
        return matrix;
    }
};

Guess you like

Origin blog.csdn.net/qq_42780025/article/details/92080270