54.螺旋矩阵

0 阅读1分钟

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:

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

示例 2:

输入: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]

7236c8ff2db0329156817c460a847849.jpeg 提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 10
  • -100 <= matrix[i][j] <= 100
 * @param {number[][]} matrix
 * @return {number[]}
 */
var spiralOrder = function (matrix) {
    let left = 0;
    let right = matrix[0].length - 1;
    let top = 0;
    let bottom = matrix.length - 1;
    let arr = [];

    while (left <= right && top <= bottom) {
        //左到右
        for (let i = left; i <= right; i++) {
            arr.push(matrix[top][i]);
        }
        top++;
        //上到下
        for (let i = top; i <= bottom; i++) {
            arr.push(matrix[i][right]);
        }
        right--;
        if (top <= bottom) {
            //右到左
            for (let i = right; i >= left; i--) {
                arr.push(matrix[bottom][i])
            }
            bottom--;
        }
        if (left <= right) {
            //从下到上
            for (let i = bottom; i >= top; i--) {
                arr.push(matrix[i][left])
            }
            left++;
        }
    }
    return arr
};