leetcode 54 螺旋矩阵 JavaScript

leetcode 54 螺旋矩阵 JavaScript
leetcode 54 螺旋矩阵 JavaScript_第1张图片
思路:用4条边界线约束遍历范围
分别定义top、bottom、right、left四条边界线,代表遍历的边界范围,之后按照上右下左的顺序进行螺旋遍历
举个例子,一开始先走1、2、3、4此时第一行已经遍历完成,需要对上边界top++,
继续遍历8、12 右边4 8 12遍历完成,right–
继续遍历11、10、9 下边遍历完成,bottom–
之后是5,碰到top了,完成,left++,以此类推直到遍历完成

/**
 * @param {number[][]} matrix
 * @return {number[]}
 */
var spiralOrder = function (matrix) {
    let top = 0, bottom = matrix.length - 1, left = 0; right = matrix[0].length - 1
    const res = []
    while (true) {
        for (let i = left; i <= right; i++) {
            res.push(matrix[top][i])
        }
        if (++top > bottom) break
        for (let i = top; i <= bottom; i++) {
            res.push(matrix[i][right])
        }
        if (--right < left) break
        for (let i = right; i >= left; i--) {
            res.push(matrix[bottom][i])
        }
        if (--bottom < top) break
        for (let i = bottom; i >= top; i--) {
            res.push(matrix[i][left])
        }
        if (++left > right) break;
    }
    return res
};

你可能感兴趣的:(javascript,leetcode,矩阵)