【每日一题】LeetCode 48. 旋转图像 TypeScript

📅 2026/6/30 9:30:04
【每日一题】LeetCode 48. 旋转图像 TypeScript
给定一个n×n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转 90 度。你必须在原地旋转图像这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1输入matrix [[1,2,3],[4,5,6],[7,8,9]]输出[[7,4,1],[8,5,2],[9,6,3]]示例 2输入matrix [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]提示n matrix.length matrix[i].length1 n 20-1000 matrix[i][j] 1000解法一先转置后反转执行用时1ms/** Do not return anything, modify matrix in-place instead. */ function rotate(matrix: number[][]): void { const n matrix.length for(let i0;in;i){ for(let ji1;jn;j){ [matrix[i][j] ,matrix[j][i]] [matrix[j][i],matrix[i][j]] } } for(let i0;in;i){ matrix[i].reverse() } };或手写反转函数reverse()/** Do not return anything, modify matrix in-place instead. */ function rotate(matrix: number[][]): void { const n matrix.length for(let i0;in;i){ for(let ji1;jn;j){ [matrix[i][j] ,matrix[j][i]] [matrix[j][i],matrix[i][j]] } } for(let i0;in;i){ let left 0 , right n-1 while(leftright){ [matrix[i][left],matrix[i][right]] [matrix[i][right],matrix[i][left]] left right-- } } };解法二先翻转再转置执行时长0ms/** Do not return anything, modify matrix in-place instead. */ function rotate(matrix: number[][]): void { const n matrix.length let top0 , bottom n-1 while(topbottom){ [matrix[top],matrix[bottom]] [matrix[bottom],matrix[top]] top bottom-- } for(let i0;in;i){ for(let j0;ji;j){ [matrix[i][j],matrix[j][i]] [matrix[j][i],matrix[i][j]] } } };//这段代码对角线右上角 for(let i0;in;i){ for(let ji1;jn;j){ [matrix[i][j],matrix[j][i]] [matrix[j][i],matrix[i][j]] } } 等价于对角线左下脚 for(let i0;in;i){ for(let j0;ji;j){ [matrix[i][j],matrix[j][i]] [matrix[j][i],matrix[i][j]] } }共勉