剑指offer实践 ——29.顺时针打印矩阵(python版)



题目

顺时针打印矩阵
在这里插入图片描述


一、思路一

通过题目,可以知道我们的打印顺序其实是:
在这里插入图片描述
不难看出,其实是对这个矩阵进行了从外到内一圈一圈的遍历。
首先打印最外层,首先打印第一行,在打印最后一列,然后打印最后一行,在打印第一列,直到indexi=(1,0)这个位置,需要进入下一层的打印:
在这里插入图片描述
在第二层,仍旧是依次打印第二层中的第一行、最后一列、最后一行、第一列直到重复的位置。
在这里插入图片描述
有更多的曾,依旧是上述的打印规律。
因此需要重点注意的地方:
1.如何区分当前是否需要跳转到下一层
2.当前层遍历的四个顶点的index
3.何时结束遍历

解决这三个问题,需要:
1.一个标志当前index是否遍历过的矩阵:bool_matrix
2.每当遍历到当前层已经遍历过的位置,调整四个顶点的范围。
3.当走过的路径==当前矩阵数字的个数时,结束遍历

def spiralOrder(matrix):
    if not matrix:
        return []
        
    rows = len(matrix)
    cols = len(matrix[0])

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值