Appearance
54. 螺旋矩阵
原题链接:LeetCode 54. 螺旋矩阵
题目描述
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
**输入:**matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]
示例 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]
提示:
- `m == matrix.length`
- `n == matrix[i].length`
1
-100
难度: Medium
题解代码
javascript
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function(matrix) {
const map = (arr, r = []) => {
for (let i = 0, len = arr.length; i < len; i++) {
if (!arr[i].length) return r
if (i === 0) {
r = r.concat(arr[i])
} else if (i === len - 1){
r = r.concat(arr[i].reverse())
} else {
r.push(arr[i].pop())
}
}
// 去掉首尾行
arr.shift()
arr.pop()
for (let i = arr.length - 1; i >= 0; i--) {
if (arr[i].length) {
r.push(arr[i].shift())
}
}
if (arr.length) {
return map(arr, r)
} else {
return r
}
}
return map(matrix, [])
};