Python面试题更新 2026-08-05

请实现一个 Python 函数,接收矩阵的阶数 n,返回一个按螺旋顺序填充数字的 n 阶矩阵(例如从 1 开始,顺时针螺旋递增)。

编码实现问题拆解Python

考察说明

考察对二维数组操作、边界控制和模拟螺旋遍历的编程能力。

回答思路

  1. 【回答框架 1】定义一个 n×n 的零矩阵,并设置上下左右四个边界变量 top、bottom、left、right,以及当前填充数字 num 从 1 开始。
  2. 【回答框架 2】使用 while 循环,当 num <= n*n 时,依次按从左到右、从上到下、从右到左、从下到上的顺序填充边界,每填充完一条边就向内收缩对应的边界。
  3. 【回答框架 3】在填充每条边时,需要判断边界是否重叠(例如 top <= bottom 且 left <= right),避免重复填充。
  4. 【回答框架 4】边界情况:当 n=0 时返回空矩阵;n=1 时直接返回 [[1]];同时确保 n 为非负整数。
  5. 【回答框架 5】时间复杂度为 O(n^2),空间复杂度为 O(n^2)(用于存储结果矩阵)。
  6. 【关键点 1】使用四个边界变量控制螺旋遍历方向。
  7. 【关键点 2】每填充完一个方向后及时更新边界值。
  8. 【关键点 3】注意处理边界重叠条件,防止越界或重复填充。
  9. 【关键点 4】初始化矩阵时确保所有元素为 0 或适当占位。
  10. 【关键点 5】对于 n=0 或 n=1 的极端情况单独处理。
  11. 【易错点 1】不注意边界收缩顺序可能导致死循环或填充错位。
  12. 【易错点 2】在 while 循环中未检查边界大小,可能引发索引错误。
  13. 【易错点 3】忽略 n=0 情况导致返回错误结果。