🧩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 · 矩阵