LeetCode 补拙笔记0. 前言日期2026.05.26题目48. 旋转图像难度中等标签数组、矩阵、原地算法1. 题目理解问题描述给定一个n × n的二维矩阵matrix将其原地顺时针旋转 90 度不能使用额外矩阵空间。示例输入matrix [[1,2,3],[4,5,6],[7,8,9]]输出[[7,4,1],[8,5,2],[9,6,3]]2. 解题思路核心观察顺时针旋转90°可以分解为两步操作矩阵转置主对角线交换元素每一行水平翻转左右镜像两步操作均为原地操作无需额外矩阵空间。算法步骤对矩阵进行转置遍历上三角区域交换matrix[i][j]与matrix[j][i]对每一行进行水平翻转遍历每一行的前半部分交换matrix[i][j]与matrix[i][n-1-j]。3. 代码实现packagelc48;classSolution{publicvoidrotate(int[][]matrix){intnmatrix.length;//转置for(inti0;in;i){for(intji;jn;j){inttempmatrix[i][j];matrix[i][j]matrix[j][i];matrix[j][i]temp;}}//垂直镜像for(inti0;in;i){for(intj0;jn/2;j){inttempmatrix[i][j];matrix[i][j]matrix[i][n-1-j];matrix[i][n-1-j]temp;}}}}4. 代码优化说明减少分支判断合并变量声明代码更紧凑packagelc48;classSolution{publicvoidrotate(int[][]matrix){intnmatrix.length;// 矩阵转置for(inti0;in;i){for(intji;jn;j){inttempmatrix[i][j];matrix[i][j]matrix[j][i];matrix[j][i]temp;}}// 水平翻转每一行for(inti0;in;i){for(intj0;jn/2;j){inttempmatrix[i][j];matrix[i][j]matrix[i][n-1-j];matrix[i][n-1-j]temp;}}}}5. 复杂度分析时间复杂度O(n2)O(n^2)O(n2)两次遍历矩阵总操作次数为n2n^2n2级。空间复杂度O(1)O(1)O(1)仅使用常数级临时变量原地修改矩阵。6. 总结核心思路转置 水平翻转将旋转问题拆解为两个简单的原地操作优化后代码逻辑更紧凑减少了冗余变量和分支可读性更高关键技巧顺时针旋转90°的原地操作是矩阵类题目的经典模板转置水平翻转的组合是最简洁高效的实现方式。