顺时针打印矩阵
剑指 Offer 29. 顺时针打印矩阵
题目
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
题解
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function(matrix) {
if(matrix.length == 0) return [];
let _top = 0,
_right = matrix[0].length-1,
_bottom = matrix.length-1,
_left = 0,
res = [];
// 动态更新边界值 直至越界
while(true){
for(let i=_left;i<=_right;i++) res.push(matrix[_top][i])
if(++_top > _bottom) break;
for(let i=_top;i<=_bottom;i++) res.push(matrix[i][_right])
if(--_right < _left) break;
for(let i=_right;i>=_left;i--) res.push(matrix[_bottom][i])
if(--_bottom < _top) break;
for(let i=_bottom;i>=_top;i--) res.push(matrix[i][_left])
if(++_left > _right) break;
}
return res;
};
最后更新于