[LeetCode]48. Rotate Image

48. Rotate Image

翻转二维数组,这分为顺时针和逆时针,分别如下:

1. 顺时针

'''
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(object):
def rotate(self, matrix):
"""
 :type matrix: List[List[int]]
 :rtype: void Do not return anything, modify matrix in-place instead.
 """
matrix.reverse()
for i in range(0, len(matrix)):
for j in range(i+1, len(matrix[i])):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

先进行反转,再一一置换

2. 逆时针

'''
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
'''
class Solution(object):
def rotate(self, matrix):
"""
 :type matrix: List[List[int]]
 :rtype: void Do not return anything, modify matrix in-place instead.
 """
for x in matrix:
x.reverse()
for i in range(0, len(matrix)):
for j in range(i+1, len(matrix[i])):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

先对子数组进行反转,再进行一一置换

posted @ 2017-08-19 15:52  banananana  阅读(124)  评论(0)    收藏  举报