LeetCode 48. 旋转图像

Algorithm

  • [🎯 问题](#🎯 问题)
  • [🏛 通俗解释](#🏛 通俗解释)
  • [🛠️ 伪代码](#🛠️ 伪代码)
  • [⚡ C++ 实现](#⚡ C++ 实现)
  • [📦 示例](#📦 示例)
  • [📚 时间 & 空间复杂度分析](#📚 时间 & 空间复杂度分析)

🎯 问题

给定一个 n × n 的二维矩阵 matrix,将其 原地顺时针旋转 90°

⚠️ 要求:

  • 必须在原地修改 matrix
  • 不允许使用额外的矩阵来存储结果。

🏛 通俗解释

旋转 90° 可以分解为两步:

  1. 转置 (transpose):把 matrix[i][j]matrix[j][i] 交换(沿主对角线翻转)。

    例子:

    复制代码
    1 2 3        1 4 7
    4 5 6   →    2 5 8
    7 8 9        3 6 9
  2. 翻转每一行(reverse row):把每一行左右对称交换。

    复制代码
    1 4 7        7 4 1
    2 5 8   →    8 5 2
    3 6 9        9 6 3

最终得到的就是顺时针旋转 90° 的结果。


🛠️ 伪代码

复制代码
function rotate(matrix):
    n = len(matrix)

    # 第一步:转置矩阵
    for i in 0..n-1:
        for j in i..n-1:
            swap(matrix[i][j], matrix[j][i])

    # 第二步:翻转每一行
    for i in 0..n-1:
        reverse(matrix[i])

⚡ C++ 实现

cpp 复制代码
#include <vector>
#include <algorithm>
using namespace std;

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();

        // 1. 转置矩阵
        for (int i = 0; i < n; i++) {
            for (int j = i; j < n; j++) {
                swap(matrix[i][j], matrix[j][i]);
            }
        }

        // 2. 每一行翻转
        for (int i = 0; i < n; i++) {
            reverse(matrix[i].begin(), matrix[i].end());
        }
    }
};

📦 示例

输入:

复制代码
1 2 3
4 5 6
7 8 9

执行过程:

  1. 转置 →

    1 4 7
    2 5 8
    3 6 9

  2. 每行翻转 →

    7 4 1
    8 5 2
    9 6 3

输出:

复制代码
7 4 1
8 5 2
9 6 3

📚 时间 & 空间复杂度分析

  • 时间复杂度 :O(n²)
    • 转置需要访问矩阵上三角部分(约 n²/2),翻转每行 O(n),合计 O(n²)。
  • 空间复杂度 :O(1)
    • 只在原地交换,不需要额外的存储空间。

相关推荐
vibecoding日记15 小时前
双非如何快速入职字节等大厂大模型?真实案例分析:推理优化和投机解码
算法·求职·大模型工程师
yszaygr213817 小时前
Verilog参数化游程编码RLE模块
算法
望易18 小时前
刚设计的大模型架构-双域耦合认知框架
算法·架构
复杂网络21 小时前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法
apocelipes1 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
HjhIron2 天前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩2 天前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹2 天前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
vivo互联网技术2 天前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc