题目:
给定一个n*n的数组,将其顺时针旋转90度,要求直接对原数组进行处理,不要使用多余的空间或者新建数组旋转。输入输出样例:
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] ]解题思路:
考虑输入输出的差别,先将数组按照正对角线对称,再对每一行的向量进行反转,即可得到旋转90度的结果。
代码(Python):
class Solution(object):
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
for i in range(len(matrix)):
for j in range(len(matrix[0])-i):
temp = matrix[i][j+i]
matrix[i][j+i] = matrix[j+i][i]
matrix[j+i][i] = temp
for i in range(len(matrix)):
matrix[i].reverse()
本文介绍一种高效算法,可在原地将n*n二维数组顺时针旋转90度,通过先对称交换元素再反转每行实现,避免额外空间开销。

526

被折叠的 条评论
为什么被折叠?



