Skip to content
On this page

54. 螺旋矩阵

原题链接:LeetCode 54. 螺旋矩阵

题目描述

给你一个 mn 列的矩阵 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]

提示:

- `m == matrix.length`

- `n == matrix[i].length`

1 
-100

难度: Medium


题解代码

javascript
/**
 * @param {number[][]} matrix
 * @return {number[]}
 */
var spiralOrder = function(matrix) {
    const map = (arr, r = []) => {
        for (let i = 0, len = arr.length; i < len; i++) {
            if (!arr[i].length) return r
            if (i === 0) {
                r = r.concat(arr[i])
            } else if (i === len - 1){
                r = r.concat(arr[i].reverse())
            } else {
                r.push(arr[i].pop())
            }
        }
        // 去掉首尾行
        arr.shift()
        arr.pop()

        for (let i = arr.length - 1; i >= 0; i--) {
            if (arr[i].length) {
                r.push(arr[i].shift())
            }
        }

        if (arr.length) {
           return map(arr, r)
        } else {
            return r
        }

    }
    return map(matrix, [])
};

技术文档集合