【leetCode】59. 螺旋矩阵 II

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

示例:
输入: 3
输出:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]
通过次数35,811提交次数46,227

同《螺旋矩阵》 不同的是这一题是赋值 上一题是读取再存入

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        if(n==0) return {{}};

        int num=0;
        int left=0,right=n-1,up=0,down=n-1;
        vector<vector<int>> res(n,vector<int>(n));
        while(true){
            for(int i=left;i<=right;i++) res[up][i]=++num;
            if(++up>down) break;
            for(int i=up;i<=down;i++) res[i][right]=++num;
            if(--right<left) break;
            for(int i=right;i>=left;i--) res[down][i]=++num;
            if(--down<up) break;
            for(int i=down;i>=up;i--) res[i][left]=++num;
            if(++left>right) break;
        }
        return res;
    }
};

关键的一处是定义res时 因为没有push_back而是数组方式存入 所以必须初始化数组大小

 vector<vector<int>> res(n,vector<int>(n));

螺旋矩阵I

你可能感兴趣的:(LeetCodes刷题之路)