螺旋矩阵(二)

Leecode刷题

  • 题目描述

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

  • 示例

输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

  • 代码
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;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_42780025/article/details/92080270