[python]从蛇形打印矩阵说开去

本文介绍了如何按照蛇形方式打印n×n矩阵,包括正方形和非正方形矩阵的情况。首先从基础的‘方向、边界与修改’思路出发,接着探讨‘寻找规律’以简化边界判断,最后提出‘完全使用规律法’实现更简洁的代码。对于非正方形矩阵,通过调整数列生成器适应不同维度,实现了蛇形打印。
摘要由CSDN通过智能技术生成

手撕题常客,不是很难,但是思路比较多。

题目

给出一个 n × n n\times n n×n数组,按照回字形(“向右、向下、向左、向上”循环)打印,例如:

输入 n = 3 n=3 n=3,即数组:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

蛇形输出结果:
[1, 2, 3, 6, 9, 8, 7, 4, 5]

思路

1.方向、边界与修改

这是比较直接的思路,给定一个方向d,分别指示下一步游标(i,j)要移动的量,并给出一个边界,移动到触碰边界时修改方向和边界的值。

  • 该方法较为常规,写得不规范的话容易数组越界。

详细代码略,只给出构建原 n × n n\times n n×n 矩阵的代码以供下一步使用。

# prepare-origin matrix-data
n = 4 # size of matirx, for example, which is `4x4`
a = [[(i+1)+j*n for i in range(n)] for j in range(n)]
for line in a:
    print(line)

2.寻找规律

  1. 向当前一个方向移动的最大步数记为next_step
  2. next_step符合规律 n , n − 1 , n − 1 , n − 2 , n − 2...1 , 1 n,n-1,n-1,n-2,n-2...1,1 n,n1,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值