编辑代码

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @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
};