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

题目描述

剑指 Offer 29. 顺时针打印矩阵
在这里插入图片描述

解题思路

  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;
};

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值