思路:转置 + 水平翻转
考虑一个坐标(i , j) , 旋转90度之后变成(j,n-1-i)
因为旋转后:第一行会到最后一列,第二行会到倒数第二列,以此类推。
所以旋转后的列号是n-1 - 原来的行号
旋转后:第一列会到第一行,第二列会到第二行,以此类推。
现有一幅正方形图像,它被存储为一个 n×n 的二维整数数组 matrix,数组中的每个位置保存一个像素值。
你需要对这幅图像执行一次顺时针 90 度旋转。
本次操作要求原地进行:只能调整 matrix 内部元素的位置,不能创建新的数组。
输入包含一个参数 matrix,它是一个 n×n 的二维整数数组,表示尚未旋转的正方形图像。数组中的 matrix[i][j] 表示第 i 行第 j 列的像素值。
该函数不返回任何值。调用完成后,传入的 matrix 需要已经被修改为顺时针旋转 90 度后的结果。
输入
2
1 2
3 4
输出
3 1
4 2
说明
原矩阵为 [1324],顺时针旋转 90 度后,原矩阵最左列从下到上变成新矩阵的第 1 行,原矩阵最右列从下到上变成新矩阵的第 2 行。
因此结果为第 1 行 3 1,第 2 行 4 2。
输入
1
-5
输出
-5
说明
当 n=1 时,矩阵只有一个元素 −5,顺时针旋转 90 度不会改变它的位置,所以输出仍为 −5。
输入
3
-1 -2 -3
-4 -5 -6
-7 -8 -9
输出
-7 -4 -1
-8 -5 -2
-9 -6 -3
说明
原矩阵为 −1−4−7−2−5−8−3−6−9。
顺时针旋转 90 度后,新矩阵第 1 行由原矩阵第 1 列从下到上的元素组成:−7,−4,−1。新矩阵第 2 行由原矩阵第 2 列从下到上的元素组成:−8,−5,−2。新矩阵第 3 行由原矩阵第 3 列从下到上的元素组成:−9,−6,−3。
因此输出为:
-7 -4 -1
-8 -5 -2
-9 -6 -3
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册