59. 螺旋矩阵 II

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

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

题解

/**
 * @param {number} n
 * @return {number[][]}
 */
var generateMatrix = function(n) {
    let res = new Array(n).fill(undefined).map(item =>new Array(n))
    let x = 0, y = 0, a = 1,b=n
    while (a <= n * n) {
        while (x < b) {
            res[y][x] = a++
            x++
        }
        x--
        a--
        while (y < b) {
            res[y][x] = a++
            y++
        }
        y--
        a--
        while (x >=n-b) {
            res[y][x] = a++
            x--
        }
        x++
        a--
        while (y>n-b) {
            res[y][x] = a++
            y--
        }
        b--
        a--
        y++
        if(b==0){
            break
        }
    }
    return res
};