螺旋矩阵 II

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

示例:

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

class Solution {
public:
    vectorint>> generateMatrix(int n) {
        if(n<0)
            return {};
        
        vectorint>> res(n,vector<int>(n,0));
        int left=0,right=n-1;
        int top=0,bottom=n-1;
        int index=1;
        while(left<=right&&top<=bottom)
        {
            for(int i=left;i<=right;++i)
                res[top][i]=index++;
            
            if(top<bottom)
            {
                for(int i=top+1;i<=bottom;++i)
                    res[i][right]=index++;
            }
            
            if(topright)
            {
                for(int i=right-1;i>=left;--i)
                    res[bottom][i]=index++;
            }
            
            if(top<bottom)
            {
                for(int i=bottom-1;i>top;--i)
                    res[i][left]=index++;
            }
            ++left,--right,++top,--bottom;
        }
        return res;
    }
};

 

你可能感兴趣的:(螺旋矩阵 II)