剑指 Offer 29. 顺时针打印矩阵
题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
输入: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 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| var spiralOrder = function(matrix) { var res = [] let flag = true while(matrix.length) { if(flag){ res = res.concat(matrix.shift()) for(let i=0; i<matrix.length; i++){ matrix[i].length && res.push(matrix[i].pop()) } } else { res = res.concat(matrix.pop().reverse()) for(let i=matrix.length - 1; i> 0; i--){ matrix[i].length && res.push(matrix[i].shift()) } } flag = !flag } return res };
|