把这两个题放一起是因为它们本质是一道题。(这句话是废话)
先来看一下题干
链接:https://leetcode-cn.com/problems/rotate-image/
面试题01.07. 题干:略
因为:
分析:第一反应,将图像顺时针旋转90°,好像也不是那么难:
(0,0)=> (0,n)
(0,1)=> (1,n)
(0,2)=> (2,n)
··· ···
(n,n-1)=> (n-1,n)
(n,n)=> (n,0)
emmm
还是算了吧……
头铁的童鞋可以看这里:https://blog.youkuaiyun.com/weixin_45761807/article/details/115560716
如果你有一点点线性代数的知识加上一点点敏锐的洞察力,你就会发现,将图像顺时针旋转90°,不就是相当于
先沿主对角线(左上-右下)翻转,再沿y轴翻转吗
答案出:
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
n = len(matrix)
m = n//2
tmp = 0
for i in range(0,n):
for j in range(i, n):
tmp = matrix[i][j]
matrix[i][j] = matrix[j][i]
matrix[j][i] = tmp
for i in range(0, n):
for j in range(0, m):
tmp = matrix[i][j]
matrix[i][j] = matrix[i][n-j-1]
matrix[i][n-j-1] = tmp