给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
分析
- 不用一次想移动的太多,可以移动一位
- 另外相当于依次移动,但是需要将其中一个拿出来作为空位,最后再补上
- 陷阱就是那出那个出来,下面一次需要顺序补上
- 脑袋中需要想找个这样的一个旋转场景
- 可以假设四个角的移动
- 被填充的行等于移动的数据的列
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
def rotate_layer(matrix, start, end):
for i in range(end - start):
top = matrix[start][start+i]
# 第一列移动到第一行
matrix[start][start+i] = matrix[end - i][start]
# 最后一行移动到第一列
matrix[end - i][start] = matrix[end][end - i]
# 最后一列移动到最后一行
matrix[end][end - i] = matrix[start + i][end]
# 第一行移动到最后一列
matrix[start+i][end] = top
n = len(matrix)
for i in range(n//2):
rotate_layer(matrix, i, n - i - 1)







网友评论