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