# 54. 螺旋矩阵

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

# 示例1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
1
2
# 示例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]
1
2
# 解法:
/**
 * @param {number[][]} matrix
 * @return {number[]}
 */
var spiralOrder = function(matrix) {
    let recursion = (arr,result=[]) => {
        for(let i=0,n = arr.length;i<n;i++){
            if(i === 0){
                result = result.concat(arr[i]);
            }else if(i === n-1){
                result = result.concat(arr[i].reverse());
            }else{
                if(arr[i].length){
                    result.push(arr[i].pop());
                }
            }
        }
        arr.shift();
        arr.pop();
        for(let i=arr.length - 1;i>=0;i--){
            if(arr[i].length){
                result.push(arr[i].shift());
            }
        }
        if(arr.length){
            return recursion(arr,result);
        }else{
            return result;
        }
    }
    return recursion(matrix,[]);
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Last Updated: 1/11/2022, 10:09:22 PM