第四天打卡:螺旋矩阵

张开发
2026/4/17 21:18:24 15 分钟阅读

分享文章

第四天打卡:螺旋矩阵
题目要求给定一个正整数n生成一个包含1到n²所有元素、且按顺时针螺旋顺序排列的n×n矩阵。解题思路模拟螺旋路径这道题的核心是模拟“螺旋”的过程。我们可以把矩阵想象成一个洋葱一层一层地往里填数字。每一层我们按照“从左到右→从上到下→从右到左→从下到上”的顺序填充。为了实现这个我们需要四个边界变量left当前层的左边界right当前层的右边界top当前层的上边界bottom当前层的下边界然后我们用一个while循环只要left right且top bottom就说明还有层没填完。在每一层中我们分四步走从左到右填充上边行号固定为top列号从left到right。从上到下填充右边列号固定为right行号从top1到bottom注意这里从top1开始避免重复填充右上角。从右到左这一步需要判断只有当left right且top bottom时才执行因为如果是单行或单列就不需要这一步了。填充下边行号固定为bottom列号从right-1到left1避免重复填充右下角和左下角。从下到上同样需要判断条件。填充左边列号固定为left行号从bottom到top1避免重复填充左上角。每填充完一层我们就收缩边界left、right--、top、bottom--然后继续下一层直到所有数字都填完。具体代码实现java):关键点总结边界判断第三、四步的if判断非常关键它能避免在单行或单列时重复填充。边界收缩每完成一层四个边界都要向内收缩这样才能进入下一层。循环条件while (left right top bottom)确保了所有层都被处理。心得体会这道题看似简单但细节很多特别是边界的处理。刚开始写的时候我漏掉了if判断结果在n1或者n2的时候出错了。后来仔细分析了螺旋的路径才明白为什么需要这个判断。通过这道题我更加深刻地理解了“模拟”类题目的解题思路把过程拆解成清晰的步骤然后用代码一步步实现。

更多文章