螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
1
2
2
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function(matrix) {
let m = matrix.length
let n = matrix[0].length
if(m === 1) return matrix[0]
let ans = []
if(n === 1) {
for(let i = 0; i < m; i++){
ans.push(matrix[i][0])
}
return ans
}
let j = 0
while(true) {
if(n - j > j) {
for(let i = j; i < n - j; i++) {
ans.push(matrix[j][i])
}
} else {
return ans
}
if(m - j > j + 1) {
for(let i = j + 1; i < m - j; i++) {
ans.push(matrix[i][n- j - 1])
}
}else {
return ans
}
if(n - j -2 >= j) {
for(let i = n - j - 2; i >= j; i--) {
ans.push(matrix[m - j - 1][i])
}
} else {
return ans
}
if(m - j - 2 > j) {
for(let i = m - j - 2; i > j; i--) {
ans.push(matrix[i][j])
}
} else {
return ans
}
j++
}
};
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/spiral-matrix/