58.螺旋矩阵II

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

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

思路
搜索方法同54.螺旋矩阵,不过一开始要给定result的大小vector> retult(n, vector(n, 0));

#include 
using namespace std;
class Solution {
public:
    vector> generateMatrix(int n) {
        vector> retult(n, vector(n, 0));
        int x = 0, y = 0, x2 = n, y2 = n, j = 1;
        while (x <= x2 && y <= y2)
        {
            for (int i = y; i < y2 ; i++) 
            { retult[x][i] = j++; }
            for (int i = x + 1; i < x2 ; i++)
            {
                retult[i][y2 - 1] = j++;
            }
            if (x < x2 && y < y2)
            {
                for (int i = y2 - 2; i > y; i--)
                {
                    retult[x2 - 1][i] = j++;
                }
                for (int i = x2 - 1; i > x ; i--)
                {
                    retult[i][y] = j++;
                }
            }
            x++; y++; x2--; y2--;
        }
        return retult;
    }
};

int main(int argc, char* argv[])
{
    int n = 3;
    auto res = Solution().generateMatrix(n);
    return 0;
}

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