原地旋转矩阵需分层处理,每层用四元轮换更新上、右、下、左四边元素,第k层遍历n−2k−1次,奇数阶最内层单元素不操作,避免数据覆盖。

原地旋转矩阵必须分层处理
直接遍历交换会导致数据被覆盖,必须把 n x n 矩阵看作若干嵌套的正方形“环”,从外向内逐层旋转。每层只处理上边(不含右端点)、右边(不含下端点)、下边(不含左端点)、左边(不含上端点)这四段,用一个临时变量暂存上边元素即可完成一圈轮换。
常见错误是循环边界写错:第 k 层(从 0 开始)的边长为 n - 2*k,该层索引范围是 [k, n-1-k],但轮换时只需遍历 n - 2*k - 1 次——因为四个角在一次轮换中已同步更新,多跑一次就重复了。
- 对
4x4矩阵,第 0 层需轮换 3 次,不是 4 次 - 当
n为奇数时,最内层是单个元素(如5x5的中心位置[2][2]),无需操作 - 不要试图用
swap()两两交换替代四元轮换,会破坏顺序
std::vector<:vector>> 原地旋转的 C++ 实现
以下代码严格按层 + 四元轮换实现,不依赖额外空间(除几个 int 变量):
tmp
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











