🧩Algo 矩阵
48. 旋转图像
难度:🟡 Medium | 标签:矩阵 | 状态:⬜ LeetCode 链接
思路
顺时针 90° = 沿主对角线转置 + 每行反转。 两步都是原地操作,O(1) 空间。
代码
class Solution {
public:
void rotate(vector<vector<int>>& m) {
int n = m.size();
// 1. transpose
for (int i = 0; i < n; ++i)
for (int j = i + 1; j < n; ++j)
swap(m[i][j], m[j][i]);
// 2. reverse each row
for (auto& row : m) reverse(row.begin(), row.end());
}
};
复杂度
- 时间 O(n²),空间 O(1)
易错 / 回顾
- 转置时 j 从
i+1开始,否则会换两次回到原样 - 逆时针 90°:转置 + 反转列(或者反转行 + 转置)
- 180°:反转上下 + 反转左右
Related · 矩阵