Hot100:旋转图像(Rotate Image)转置 + 行反转实现原地 90 度旋转 ACERS 解析

副标题 / 摘要 旋转图像的核心不是“算新坐标”,而是把映射拆成两个可原地执行的操作:转置(transpose)+ 反转每一行(reverse rows)。本文按 ACERS 模板给出从朴素解到原地解的推导、常见坑与多语言可运行实现。 预计阅读时长:10~14 分钟 标签:Hot100、矩阵、原地、转置 SEO 关键词:旋转图像, Rotate Image, 原地旋转 90 度, 转置, 行反转, LeetCode 48 元描述:顺时针原地旋转 n×n 矩阵 90 度:转置 + 行反转模板解;含思路推导、复杂度对比、工程迁移与多语言实现。 目标读者 刷 Hot100,想把“矩阵原地技巧”整理成可复用模板的学习者 需要在工程里处理二维网格(图像/棋盘/地图/热力图)变换的开发者 对空间敏感,希望避免额外矩阵拷贝的工程师 背景 / 动机 在很多场景里,“旋转”是高频操作: 图像增强、棋盘/地图方向变换、传感器方向校正、UI 表格视图旋转等。 如果每次旋转都新建一个矩阵,空间开销是 O(n^2),在大矩阵或高频调用时会非常“吃内存”,甚至触发 GC/内存抖动。 因此这题的关键约束是:必须原地(in-place)完成 90 度旋转。 核心概念 概念 含义 为什么重要 坐标映射 旋转后的新坐标与旧坐标之间的关系 让你知道“最终要变成什么” 转置(Transpose) matrix[i][j] 与 matrix[j][i] 交换 原地可做、且能把行列关系对齐 行反转(Reverse Row) 把每一行左右翻转 与转置组合后刚好等价于顺时针 90 度 原地算法 只用常数额外空间完成变换 适合大矩阵与性能场景 A — Algorithm(题目与算法) 题目还原 给定一个 n x n 的二维矩阵 matrix 表示图像。请将图像 顺时针旋转 90 度。 要求 原地修改 matrix,不要使用另一个矩阵。 ...

2026年2月1日 · 7 分钟 · map[name:Jeanphilo]

Hot100:轮转数组(Rotate Array)三次反转 ACERS 解析

副标题 / 摘要 轮转数组是典型的数组变换题:把数组整体向右移动 k 位。本文用 ACERS 拆解“三次反转”的核心思路,并给出工程场景迁移与多语言可运行实现。 预计阅读时长:10~12 分钟 标签:Hot100、数组、旋转 SEO 关键词:Rotate Array, 轮转数组, 数组旋转, 反转, O(n) 元描述:三次反转法解决轮转数组,含复杂度对比、工程场景与多语言代码。 目标读者 正在刷 Hot100 的学习者 想掌握“数组原地变换”模板的中级开发者 需要处理时间序列对齐、轮值偏移的工程师 背景 / 动机 轮转数组在工程中非常常见: 轮值排班、时间序列对齐、环形缓冲区、前端轮播等都可以抽象为“整体右移 k 位”。 如果用逐步移动会变成 O(nk),在数据量稍大时就不可用,因此需要更高效的原地方案。 核心概念 轮转(rotate):把数组向右移动 k 位,后 k 个元素移到最前 k 取模:k %= n,避免 k 超过数组长度 反转(reverse):用双指针交换来原地反转区间 原地(in-place):在原数组上操作,额外空间 O(1) A — Algorithm(题目与算法) 题目还原 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 输入输出 名称 类型 描述 nums int[] 整数数组 k int 向右轮转步数 返回 int[] 轮转后的数组 示例 1(官方) 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 示例 2(官方) 输入: nums = [-1,-100,3,99], k = 2 输出: [3,99,-1,-100] C — Concepts(核心思想) 关键思路:三次反转 反转整个数组 反转前 k 个 反转后 n-k 个 反转后的位置关系刚好等价于右移 k 位。 ...

2026年1月24日 · 5 分钟 · map[name:Jeanphilo]