/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix int整型二维数组
* @return int整型一维数组
*/
function spiralOrder( matrix ) {
if(matrix.length === 0){
return [];
}
let length = matrix.length;
let k = parseInt( length / 2 );//有几轮
let loop=0;
let resultList = [];
let i=0;let j=0;
while(loop<k){
//从左到右 x不变,y++,x=loop,y=loop~length - 1 -loop
i=loop;j=loop;
for(;j<=length - 1 - loop;j++){
resultList.push(matrix[i][j]);
}
//从上到下 y不变,x++;y=j-1,x = loop+1~length - 1 - loop
i=loop+1;j=j-1;
for(;i<=length - 1 - loop;i++){
resultList.push(matrix[i][j]);
}
//从右到左 x不变,y--,x=i-1,y=j-1~loop
i=i-1;j=j-1;
for(;j>=loop;j--){
resultList.push(matrix[i][j]);
}
//从下到上 y不变,x--,y=j+1;x=i-1~loop+1
i=i-1;j=j+1;
for(;i>=loop+1;i--){
resultList.push(matrix[i][j]);
}
loop++;
}
if(length % 2 === 1){ //奇数时中间需要单独处理
resultList.push(matrix[loop][loop]);
}
return resultList;
}
module.exports = {
spiralOrder : spiralOrder
};