# 54. 螺旋矩阵
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
# 示例1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
1
2
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
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
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