题目:
输出一个矩阵,依照从内向里以顺时针的程序顺次打印出每一个数字。
答题:
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function(matrix) {let res = []
let tem = ''
try{while(matrix.length){let top = matrix.shift()
for(let i =0;i<top.length;i++){tem = top[i]
if(tem !== undefined){res.push(tem)
}else{return res}
}
for(let i=0;i<matrix.length;i++){tem = matrix[i].pop()
if(tem !== undefined){res.push(tem)
}else{return res}
}
let bottom = matrix.pop()
for(let i=bottom.length - 1;i>-1;i--){tem = bottom[i]
if(tem !== undefined){res.push(tem)
}else{return res}
}
for(let i=matrix.length - 1;i>-1;i--){tem = matrix[i].shift()
if(tem !== undefined){res.push(tem)
}else{return res}
}
}
}catch(err){return res}
return res
};
把数组的每一行,每一列当成一个整体,每个循环过程中用到的话就要删除掉。
也就是先删除最下面一行,再删除最右面一列,而后删除最初一行,最初删除最右边一列。
在遍历过程中有的值可能就没有了,这时候把 res 返回即可。
毕竟呈现 undefined 的时候,数组中就曾经没有内容了