思路很简单, 也比较基础, 但是写起来有一点点麻烦
也有简略的版本, 不过思路也是这个思路, 代码可读性差
const spiralOrder = function (matrix) {
let width = matrix[0].length - 1, height = matrix.length - 1;
let m = 0, n = 0;
const res = [];
while (m <= width && n <= height) {
for (let i = m; i <= width; i++) {
res.push(matrix[n][i]);
}
++n;
for (let i = n; i <= height; i++) {
res.push(matrix[i][width]);
}
--width;
if (n <= height) {
for (let i = width; i >= m; i--) {
res.push(matrix[height][i]);
}
}
--height;
if (m <= width) {
for (let i = height; i >= n; i--) {
res.push(matrix[i][m]);
}
}
++m;
}
return res;
};