给定一个 n x n 的矩阵,要求按照蛇形(之字形)的顺序填充数字,从矩阵的左上角开始,按顺时针方向螺旋式填充。
思路:
定义四个边界:上边界 top,下边界 bottom,左边界 left,右边界 right。 使用一个变量 direction 来表示当前的方向(0 表示向右,1 表示向下,2 表示向左,3 表示向上)。 遍历数字 1 到 n*n,根据当前的方向和边界条件填充矩阵,并适时更新边界和方向。 图解: 假设 n = 3,蛇形矩阵的填充过程如下:
复制代码 初始状态: [ [0, 0, 0], [0, 0, 0], [0, 0, 0] ]
方向0(向右): [ [1, 2, 3], [0, 0, 0], [0, 0, 0] ]
方向1(向下): [ [1, 2, 3], [4, 5, 6], [0, 0, 0] ]
方向2(向左): [ [1, 2, 3], [4, 5, 6], [7, 8, 0] ]
方向3(向上): [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 代码详解:
python 复制代码 def generateMatrix(n): matrix = [[0] * n for _ in range(n)] num = 1 top, bottom = 0, n - 1 left, right = 0, n - 1 direction = 0 # 0: right, 1: down, 2: left, 3: up
while num <= n * n:
if direction == 0: # right
for i in range(left, right + 1):
matrix[top][i] = num
num += 1
top += 1
elif direction == 1: # down
for i in range(top, bottom + 1):
matrix[i][right] = num
num += 1
right -= 1
elif direction == 2: # left
for i in range(right, left - 1, -1):
matrix[bottom][i] = num
num += 1
bottom -= 1
elif direction == 3: # up
for i in range(bottom, top - 1, -1):
matrix[i][left] = num
num += 1
left += 1
direction = (direction + 1) % 4 # update direction
return matrix
知识总结 新知识点:
边界条件的控制:通过维护四个边界变量来控制填充的范围。 方向控制:使用变量 direction 来表示当前填充的方向,并适时更新。 理解: 蛇形矩阵的填充过程实际上是一个边界收缩的过程,每次填充完一条边后,相应的边界会向内移动一步,直到所有数字填充完毕。
学习建议:
多动手实践,通过编写代码来加深理解。 尝试用不同的方法实现,比如递归或迭代,以拓宽思路。 学习计划 制定刷题计划:
每天至少刷一道蛇形矩阵相关的题目,巩固基础知识。 每周总结一次,梳理本周遇到的难点和易错点。 利用错题进行针对性学习:
对于做错的题目,要仔细分析错误原因,是边界条件处理不当,还是方向控制出错。 将错题整理成错题本,定期回顾。 工具运用 结合 AI 刷题功能:
利用豆包 MarsCode AI 的刷题功能,自动推荐相关题目进行练习。 通过 AI 的解析,了解不同题目的解题思路和方法。 结合其他学习资源:
观看相关视频教程,加深对蛇形矩阵的理解。 阅读相关博客或文章,了解不同实现方法和优化技巧。 实用学习建议:
多参加编程社区或论坛的讨论,与他人交流学习心得。 尝试将蛇形矩阵的填充方法应用到其他类似问题中,如螺旋矩阵等。