蛇形填充n阶方阵题解 | 豆包MarsCode AI 刷题

121 阅读2分钟

一、蛇形矩阵n阶方阵问题

问题描述

小U面临一个有趣的任务:在一个 n × n 的方阵中填入 1 到 n x n 这些数字,并要求按照蛇形顺序从右上角开始,沿着方阵的边界顺时针进行填充。蛇形填充的特殊排列方式使得每一层数字呈现出波浪形的排列方式。 例如,当 n=4n=4 时,方阵应如下所示:

image.png

测试样例

样例1:

image.png

样例2:

image.png

样例3:

image.png

二、解题思路

需要在一个 n x n 的方阵中按照蛇形顺序填充数字。蛇形填充的规则是从右上角开始,沿着方阵的边界顺时针进行填充,每一层数字呈现出波浪形的排列方式。

具体步骤

  1. 变量
  • int[][] list:用于存储填充后的方阵。
  • int num:用于记录当前要填充的数字,初始值为 1
  • int layer:用于记录当前填充的层数,初始值为 0
  1. 初始化方阵

    • 创建一个 n x n 的二维数组 list
    • 初始化一个变量 num 用于记录当前要填充的数字,初始值为 1
    • 初始化一个变量 layer 用于记录当前填充的层数,初始值为 0
  2. 填充方阵

    • 使用一个 while 循环,循环条件为 layer <= n / 2,表示从最外层开始逐层向内填充。

    • 在每一层中,按照以下顺序填充数字:

      1. 从右上到右下:填充当前层的右边界。
      2. 从右下到左下:填充当前层的下边界。
      3. 从左下到左上:填充当前层的左边界。
      4. 从左上到右上:填充当前层的上边界(注意:这里需要跳过已经填充的角落)。
    • 每填充完一层,layer 增加 1,继续填充下一层。

  3. 结束条件

    • 当 layer 超过 n / 2 时,表示所有层都已填充完毕,退出循环。

三、解题代码

image.png

关键点

  • 边界处理:在每一层的填充过程中,注意边界的处理,确保不会重复填充已经填充过的位置。
  • 层数控制:通过 layer 变量控制当前填充的层数,确保每一层都能正确填充。
  • 填充顺序:确保填充顺序与题目要求的蛇形填充顺序一致。
  • 数据结构选择:- 使用一个二维数组 int[][] list 来表示方阵。

四、总结:

代码结构清晰,逻辑分明,易于理解。使用layer变量在每一层的填充过程中,注意了边界的处理,确保不会重复填充已经填充过的位置。