function spiralOrder( matrix ) {
if(matrix.length === 0){
return [];
}
let m = matrix.length;
let n = matrix[0].length;
let km = parseInt( m / 2 );
let kn = parseInt( n / 2 );
let loopm = 0; let loopn = 0;
let resultList = [];
let i=0;let j=0;
while(loopm<km && loopn<kn){
if(loopn<kn){
i=loopm;j=loopn;
for(;j<=n - 1 - loopn;j++){
resultList.push(matrix[i][j]);
}
}
if(loopm<km){
i=loopm+1;j=j-1;
for(;i<=m - 1 - loopm;i++){
resultList.push(matrix[i][j]);
}
}
if(loopn<kn){
i=i-1;j=j-1;
for(;j>=loopn;j--){
resultList.push(matrix[i][j]);
}
}
if(loopm<km){
i=i-1;j=j+1;
for(;i>=loopm+1;i--){
resultList.push(matrix[i][j]);
}
}
loopm++;loopn++;
}
if(m>n){
if(n%2 === 1){
i=loopn;j=loopn;
for(;i<=m-loopn-1;i++){
resultList.push(matrix[i][j]);
}
}
}else if(m<n){
if(m%2 === 1){
i=loopm;j=loopm;
for(;j<=n-loopm-1;j++){
resultList.push(matrix[i][j]);
}
}
}else{
if(m%2 === 1){
i=loopm;j=loopm;
resultList.push(matrix[i][j]);
}
}
return resultList;
}
module.exports = {
spiralOrder : spiralOrder
};