题目:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
答题:
/**
* @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的时候,数组中就已经没有内容了