二维数组遍历方式多样,按行优先最常用,外层控行、内层控列;螺旋遍历需控制上下左右边界,避免重复访问,适用于打印螺旋顺序等场景。

二维数组的遍历方式取决于具体需求,比如按行、按列、对角线、螺旋、Z字形等。掌握不同遍历逻辑,关键在于理清下标变化规律,而非死记硬背。
按行优先(常规遍历)
最常用的方式,外层控制行号,内层控制列号,逐行访问每个元素。
- 适用于需要逐行处理数据的场景,如矩阵初始化、逐行求和
- 代码结构清晰:for (int i = 0; i
- 时间复杂度 O(m×n),空间复杂度 O(1)
按列优先(转置式遍历)
外层循环遍历列索引,内层遍历行索引,适合列操作或模拟列主序存储。
- 常用于图像处理中按列采样、计算每列最大值
- 注意:访问 a[j][i] 时需确保 j 是行索引、i 是列索引,避免越界
- 若数组不规则(每行长度不同),需在内层循环中动态获取当前行列长
对角线遍历(主对角线与反对角线)
主对角线满足 i == j;反对角线满足 i + j == n - 1(n 为边长)。非方阵需调整判断条件。
- 主对角线遍历:从左上到右下,仅当 i
- 反对角线遍历:可固定和 sum = i + j,让 sum 从 0 到 rows+cols−2,再枚举合法 (i, j)
- 也可用方向向量实现:如 (1,1) 表示主对角线步进,(1,-1) 表示反对角线(需边界校验)
螺旋遍历(顺时针绕圈)
从外向内一圈圈访问,需维护上下左右四个边界,并在每轮遍历后收缩对应边界。
- 步骤顺序固定:→ ↓ ← ↑,每走完一个方向就更新对应边界
- 终止条件是 top > bottom 或 left > right,避免重复访问
- 适用于“打印矩阵螺旋顺序”、“蛇形填充”等题目,逻辑清晰但边界易错

















