螺旋矩阵 II

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

示例 1:

螺旋矩阵 II_第1张图片

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

示例 2:

输入:n = 1
输出:[[1]]

代码如下:

class Solution {
public:
    vector> generateMatrix(int n) {
        vector> res(n,vector(n,0));
        int up=0;//定义上边界
        int down=n-1;//下边界
        int left=0;//左边界
        int right=n-1;//右边界
        int num=1;//里面插入的数字由1开始
        while(num<=n*n)//插入到n*n为止
        {
            for(int i=left;i<=right;i++)//从左到右遍历
            {
                res[up][i]=num++;
            }
            if(++up>down)//用++up,不是up++ ->原因先更新up的值再与down进行比较
            {
                break;//重新定义上边界
            }
            for(int i=up;i<=down;i++)//从上到下
            {
                res[i][right]=num++;
            }
            if(--right原因先更新right的值再与left进行比较
            {
                break;//重新定义右边界
            }
            for(int i=right;i>=left;i--)//从右到左
            {
                res[down][i]=num++;
            }
            if(--down原因先更新down的值再与up进行比较
            {
                break;//重新定义下边界
            }
            for(int i=down;i>=up;i--)//从下到上
            {
                res[i][left]=num++;
            }
            if(++left>right)//用++left,不是left++ ->原因先更新left的值再与right进行比较
            {
                break;//重新定义左边界
            }
        }
        return res;
    }
};

你可能感兴趣的:(矩阵,leetcode,算法)