给你一个 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]
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function(matrix) {
let top = 0, bottom = matrix.length-1;
let left = 0, right = matrix[0].length-1;
let res = [];
if(matrix.length == 0){
return res;
}
while( top <= bottom && left <= right ){
//上面 左到右
for(let i = left; i <= right; i++){
res.push(matrix[top][i]);
}
//右边 上到下
for(let i = top+1; i <= bottom; i++){
res.push(matrix[i][right]);
}
//下面 右到左
for(let i = right-1; top!=bottom && i>=left; i--){
res.push(matrix[bottom][i]);
}
//左边 下到上
for(let i = bottom-1; left!=right && i>=top+1; i--){
res.push(matrix[i][left]);
}
++top;
--bottom;
++left;
--right;
}
return res;
};