- 分类:Array
- 时间复杂度: O(n^2)
48. Rotate Image
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Note:
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.
Example 1:
Given input matrix =
[
[1,2,3],
[4,5,6],
[7,8,9]
],
rotate the input matrix in-place such that it becomes:
[
[7,4,1],
[8,5,2],
[9,6,3]
]
Example 2:
Given input matrix =
[
[ 5, 1, 9,11],
[ 2, 4, 8,10],
[13, 3, 6, 7],
[15,14,12,16]
],
rotate the input matrix in-place such that it becomes:
[
[15,13, 2, 5],
[14, 3, 4, 1],
[12, 6, 8, 9],
[16, 7,10,11]
]
代码:
方法:
class Solution:
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
n=len(matrix)
top=0
left=0
bottom=n-1
right=n-1
while(n>1):
for i in range(n-1):
temp=matrix[top][left+i]
matrix[top][left+i]=matrix[bottom-i][left]
matrix[bottom-i][left]=matrix[bottom][right-i]
matrix[bottom][right-i]=matrix[top+i][right]
matrix[top+i][right]=temp
top+=1
left+=1
bottom-=1
right-=1
n-=2
讨论:
1.其实本来方法我已经想过了=。=然后我以为会有什么牛逼的特殊解法,就决定看看视频讲解。没想到还是那么的简单。