【发布时间】:2020-10-23 09:17:48
【问题描述】:
如果我问一些愚蠢的问题,我很抱歉(我对编码很陌生),但我没有找到明确的解释来解决我的疑问。我在leetcode上遇到了以下问题:
给定一个代表图像的 n x n 2D 矩阵,将图像旋转 90 度(顺时针)。您必须就地旋转图像,这意味着您必须直接修改输入 2D 矩阵。不要分配另一个二维矩阵并进行旋转。 例子: 输入:矩阵 = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4,1],[8,5,2],[9,6,3]]
我的解决办法是:
class Solution:
def rotate(self, matrix):
l = len(matrix)
clockwise_nums = [matrix[j][i] for i in range(l) for j in range(l - 1, -1, -1)]
final_array = [clockwise_nums[i:i + l] for i in range(0, len(clockwise_nums), l)]
return final_array
纯粹的执行(矩阵旋转)有效,但这不被接受,因为它不是就地的。但我真的不明白这意味着什么。 你认为我的方法离这里很远,我应该尝试不同的方法吗?或者有没有办法调整我的解决方案(很高兴我想出了一种旋转矩阵的方法)? 此外,任何关于就地算法的提示将不胜感激。 非常感谢!
【问题讨论】:
-
你需要注意矩阵中的元素是如何交换的,这就是问题要你做的事情
-
@Aaron 不,这不是矩阵转置。矩阵转置是沿左上-右下对角线的对称。 OP 要求旋转四分之一圈。