输入一个表示图像的
n
x
n
2D矩阵。将图像旋转90度(顺时针)
注意:
必须
就地
旋转图像,这意味着您必须直接修改输入2D矩阵。
不要
分配另一个2D矩阵并进行旋转。
Input: matrix=[[1,2,3],[4,5,6],[7,8,9]]
Output: [[7,4,1],[8,5,2],[9,6,3]]
上面为数字下面为旋转后之前的行列位置
由于不可以用其他矩阵,将数存入新的矩阵的想法流产,但是可以作为参考
n = np.arange(1, 17).reshape([4,4])
l=len(n)
res=np.zeros([l,l],dtype=int)
# res=[[0 for x in range(l)] for y in range(l)]
for a in range(l):
temp = 0
for b in range(l-1,-1,-1):
res[a][temp]=n[b][a]
temp+=1
print(res)
**************************
[[13 9 5 1]
[14 10 6 2]
[15 11 7 3]
[16 12 8 4]]
正儿八经的解法, 如果直接将行列换位置, 那么就会形成转置矩阵, 没有旋转90°,所以要在之前做一下矩阵的翻转。
matrix.reverse()-----------[[7, 4, 1], [8, 5, 2], [9, 6, 3]]
然后按照转置的方法将行列换位置就ok了
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
不要返回任何东西, 只需要修改矩阵
"""
matrix.reverse()
l=len(matrix)
for i in range(l):
for j in range(i):
matrix[i][j],matrix[j][i]=matrix[j][i],matrix[i][j]
这个方法占用内存少, 而且比较快