leetcode 54
思路
本题和之前的leetcode 59题很相似,都是螺旋矩阵相关的题目,只不过之前的题目是正方形矩阵,本题是长方形矩阵。
都是通过四层循环来模拟顺时针螺旋的方向,分别是从右到左,从上到下,从左到右,从下到上,我们首先获取到上下左右边界,每次一个方向循环完成后都更新相对应的边界,缩减螺旋范围
实现
var spiralOrder = function (matrix) {let left = 0, right = matrix[0].length - 1;let top = 0, bottom = matrix.length - 1;let nums = [];while (left <= right && top <= bottom) {// 从左向右for (let i = left; i <= right; i++) {nums.push(matrix[top][i])}// 上边界下移top++;// 从上往下for (let i = top; i <= bottom; i++) {nums.push(matrix[i][right])}// 右边界收缩right--;if (top <= bottom) {// 从右向左for (let i = right; i >= left; i--) {nums.push(matrix[bottom][i])}bottom--}if (left <= right) {// 从下往上for (let i = bottom; i >= top; i--) {nums.push(matrix[i][left])}left++}}return nums;
};