Skip to content

Commit 4440483

Browse files
committed
finish 54
1 parent 4a62e42 commit 4440483

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

54. Spiral Matrix.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**
2+
* 54. Spiral Matrix
3+
*
4+
* Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
5+
*
6+
* Example 1:
7+
* Input:
8+
* [
9+
* [ 1, 2, 3 ],
10+
* [ 4, 5, 6 ],
11+
* [ 7, 8, 9 ]
12+
* ]
13+
*
14+
* Output: [1,2,3,6,9,8,7,4,5]
15+
*
16+
* Example 2:
17+
* Input:
18+
* [
19+
* [1, 2, 3, 4],
20+
* [5, 6, 7, 8],
21+
* [9,10,11,12]
22+
* ]
23+
* Output: [1,2,3,4,8,12,11,10,9,5,6,7]
24+
*/
25+
26+
/**
27+
* @param {number[][]} matrix
28+
* @return {number[]}
29+
*/
30+
var spiralOrder = function(matrix) {
31+
var n = matrix.length;
32+
var m = (matrix[0] || []).length;
33+
var res = [];
34+
var x1 = 0;
35+
var x2 = m - 1;
36+
var y1 = 0;
37+
var y2 = n - 1;
38+
while (x1 <= x2 && y1 <= y2) {
39+
for (var x = x1; x <= x2; x++) res.push(matrix[y1][x]);
40+
for (var y = y1 + 1; y <= y2; y++) res.push(matrix[y][x2]);
41+
if (x1 < x2 && y1 < y2) {
42+
for (var x = x2 - 1; x > x1; x--) res.push(matrix[y2][x]);
43+
for (var y = y2; y > y1; y--) res.push(matrix[y][x1]);
44+
}
45+
x1++;
46+
x2--;
47+
y1++;
48+
y2--;
49+
}
50+
return res;
51+
};
52+
53+
// 横的当做 x 轴,竖的当 y 轴
54+
// x1、x2、y1、y2 是当前遍历的四边形的四个角

0 commit comments

Comments
 (0)