刷题|剑指 Offer 29. 顺时针打印矩阵_JavaScript

题目描述

剑指 Offer 29. 顺时针打印矩阵
刷题|剑指 Offer 29. 顺时针打印矩阵_JavaScript_第1张图片

解题思路

  1. 设置边界
  2. 指针遍历

代码实现

/**
 * @param {number[][]} matrix
 * @return {number[]}
 */
var spiralOrder = function(matrix) {
    let res = [];   // 用于保存数字
    if (matrix.length === 0 || matrix[0] === 0) return res;  // 若为空,就表示没有数组,直接输出空的res
    let [l, t, r, b] = [0, 0, matrix[0].length-1, matrix.length-1];   // 设置初始值,l,t,r,b相当于是四堵墙,决定指针是否返回
    
    while (true) {
        for (let i=l; i<=r; i++) {   // l->r
            res.push(matrix[t][i]);
        };
        t++;
        if (t>b) break;

        for (let j=t; j<=b; j++) {   // t->b
            res.push(matrix[j][r]);
        };
        r--;
        if (r<l) break;

        for (let i=r; i>=l; i--) {   // r->l
            res.push(matrix[b][i]);
        };
        b--;
        if (b<t) break;

        for (let i=b; i>=t; i--) {   // b->t
            res.push(matrix[i][l]);
        };
        l++;
        if (l>r) break;
    };

    return res;
};

刷题|剑指 Offer 29. 顺时针打印矩阵_JavaScript_第2张图片

你可能感兴趣的:(刷题,矩阵,javascript,leetcode,matrix)