LintCode-381.螺旋矩阵 II

螺旋矩阵 II

给你一个数n生成一个包含1-n^2的螺旋形矩阵

样例

n = 3
矩阵为
[
    [ 1, 2, 3 ],
    [ 8, 9, 4 ],
    [ 7, 6, 5 ]
]

标签

数组

code

class Solution {
public:
    /**
     * @param n an integer
     * @return a square matrix
     */
    vector<vector<int>> generateMatrix(int n) {
        // Write your code here
        if(n <= 0 ) {
            vector<vector<int> > matrix;
            return matrix;
        }

        vector<int> line(n);
        vector<vector<int> > matrix(n, line);
        int i,j,inc=1;
        int cirCount = (n+1)/2;

        //  第i圈
        for(i=0; i<cirCount; i++) {
            //  从左至右
            for(j=i; j<n-i-1;j++) {
                matrix[i][j] = inc++;
            }
            //  从上至下
            for(j=i; j<n-i-1;j++)  {
                matrix[j][n-i-1] = inc++;
            }
            //  从右至左
            for(j=i; j<n-i-1;j++) {
                matrix[n-i-1][n-j-1] = inc++;
            }
            //  从下至上
            for(j=i; j<n-i-1;j++) {
                matrix[n-j-1][i] = inc++;
            }
        }
        if(n%2 == 1)
            matrix[n/2][n/2] = inc;

        return matrix;
    }
};
posted @ 2017-05-04 16:38  LiBaoquan  阅读(439)  评论(0编辑  收藏  举报