图解算法通识讲义线性结构

二维矩阵、坐标变换与螺旋旋转

核心心智模型:四维边界围栏逐步收缩;转置翻转实现旋转,左上到右下映射空间位置。

核心交互式算法图解演练沙盒
二维矩阵模型

螺旋矩阵顺时针收敛与边界夹逼演练

步骤 1 / 4
当前扫描方向:向右遍历顶行
top:1bottom:2left:0right:2
1(0,0)
2(0,1)
3(0,2)
4(1,0)
5(1,1)
6(1,2)
7(2,0)
8(2,1)
9(2,2)

第一步:从左向右扫描顶行 [1, 2, 3]。完成后收缩上边界 top++ (变为 1)。

关键操作与时空复杂度速查对照表
操作 / 算法阶段平均时间最坏时间空间复杂度核心底层机制
螺旋 / 蛇形扫描O(M * N)O(M * N)O(1)每个单元格恰好访问一次。
右上角收敛搜索O(M + N)O(M + N)O(1)至多走 M 步行与 N 步列即可命中或排除。
template.java
int top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1;
List<Integer> res = new ArrayList<>();
while (true) {
    for (int i = left; i <= right; i++) res.add(matrix[top][i]);
    if (++top > bottom) break;
    for (int i = top; i <= bottom; i++) res.add(matrix[i][right]);
    if (--right < left) break;
    for (int i = right; i >= left; i--) res.add(matrix[bottom][i]);
    if (--bottom < top) break;
    for (int i = bottom; i >= top; i--) res.add(matrix[i][left]);
    if (++left > right) break;
}
return res;
解题核心心法提炼
  • 矩阵旋转无需开辟辅助数组,分解为「对角线转置 + 镜像翻转」优雅完成。
  • 矩阵置零利用第 0 行和第 0 列作为天然标记位,达成 O(1) 额外空间。
  • 搜索二维矩阵 II:从矩阵右上角出发,形同二叉搜索树,大于目标左移,小于目标下移。
常见踩坑警示与避坑指南
  • 螺旋遍历时收缩边界后忘记立即判定边界交叉,导致单行或单列被重复添加。

对应 Hot 100 实战题目突围

原理已掌握!立即进入沉浸式工作台开始实战演练,强化代码肌肉记忆

查看全部题目