sisterAn / JavaScript-Algorithms

基础理论+JS框架应用+实践,从0到1构建整个前端算法体系
5.51k stars 634 forks source link

螺旋矩阵 II #134

Open sisterAn opened 3 years ago

sisterAn commented 3 years ago

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

示例:

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

leetcode

sisterAn commented 3 years ago
const generateMatrix = (n) => {
    // 定义一个二维数组进行数据保存
    const result = []
    for (let i = 0; i < n; i++) {
        result.push(new Array(n))
    }
    let left = 0
    let right = n - 1
    let top = 0
    let bottom = n - 1
    let current = 1, max = n * n
    while(current <= max) {
        // 上面从左到右
        for (let i = left; i <= right; i++) {
            result[top][i] = current++
        }
        top ++
        // 右边从上到下
        for (let i = top; i <= bottom; i++) {
            result[i][right] = current++
        }
        right --
        // 下边从右到左
        for (let i = right; i >= left; i--) {
            result[bottom][i] = current++
        }
        bottom --
        // 左边从下到上
        for (let i = bottom; i >= top; i--) {
            result[i][left] = current++
        }
        left ++
    }
    return result
}