leetcode-Spiral Matrix II

来源:互联网 发布:知乎下载安卓 编辑:程序博客网 时间:2024/06/07 23:55

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,
Given n = 3,

You should return the following matrix:
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]

]

方向变化与Spiral Matrix一致。将二维数组初始化全为-1,更新后值大于0;

利用值是否为-1判断该值是否已加入到二维数组中;

按变化方向一个一个元素加入到二维数组中,一直到n*n个元素停止;

class Solution {public:    vector< vector<int> > generateMatrix(int n) {     vector< vector<int> > matrix1;     if(n == 0)        return matrix1;     vector< vector<int> > matrix(n, vector<int> (n,-1));     int count = 1;     int x = 0;     int y = 0;     int direct = 0;//0-> 1xia,2 zuo,3 shang     while(count != n*n+1)     {        if(matrix[x][y] == -1 && direct == 0)        {            matrix[x][y] = count++;            y++;            if(y == n || matrix[x][y] != -1)            {               x++;               y--;               direct = 1;               continue;            }        }        if(matrix[x][y] == -1 && direct == 1)        {             matrix[x][y] = count++;             x++;             if(x == n || matrix[x][y] != -1)             {                 x--;                 y--;                 direct = 2;                 continue;             }        }        if(matrix[x][y] == -1 && direct == 2)        {            matrix[x][y] = count++;            y--;            if(y == -1 || matrix[x][y] != -1)            {              y++;              x--;              direct = 3;              continue;            }        }        if(matrix[x][y] == -1 && direct == 3)        {            matrix[x][y] = count++;            x--;            if(x == -1 || matrix[x][y] != -1)            {                x++;                y++;                direct =  0;                continue;            }        }    }    return matrix;    }};



0 0
原创粉丝点击