LeetCode 48. Rotate Image

传送门

题意:

给你一个 $n \times n$的二维矩阵,让你在使用$O(1)$的空间复杂度的情况下,将该矩阵进行顺时针旋转(clockwise)。

思路:

clockwise

一个简单找规律。先将矩阵倒置,在按对角线对称即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"""
* clockwise rotate
* first reverse up to down, then swap the symmetry
* 1 2 3 7 8 9 7 4 1
* 4 5 6 => 4 5 6 => 8 5 2
* 7 8 9 1 2 3 9 6 3
"""
class Solution:
def rotate(self, matrix):
if not matrix:
return
matrix.reverse()
for i in range(len(matrix)):
for j in range(i + 1):
matrix[i][j],matrix[j][i] = matrix[j][i],matrix[i][j]

anticlockwise

1
2
3
4
5
6
7
"""
* anticlockwise rotate
* first reverse left to right, then swap the symmetry
* 1 2 3 3 2 1 3 6 9
* 4 5 6 => 6 5 4 => 2 5 8
* 7 8 9 9 8 7 1 4 7
"""

一行代码搞定矩阵旋转

但是好像这个空间复杂度不是$O(1)$

1
2
def rotate(self, matrix):
matrix[:] = map(list,zip(*matrix[::-1]))

Zip解析
Map解析


-------------本文结束感谢您的阅读-------------


本文标题:LeetCode 48. Rotate Image

文章作者:Statusrank

CSDN博客欢迎来访!

发布时间:2019年05月12日 - 11:05

最后更新:2019年05月12日 - 12:05

原始链接:https://statusrank.xyz/articles/ed5ef735.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

万水千山总是情,就给五毛行不行!

相关文章: