, 原地旋转输入矩阵,使其变为:[ [15,13, 2, 5], [14, 3, 4, 1], [12, 6, 8, 9], [16, 7,10,11]]
题解
旋转
可以发现,每个格子旋转四次之后都会回到原位...当然为了避免重复旋转,我们只能枚举四分之一的格子,如果 n 是偶数,如下图所示,我们可以这么划分:
?
如果 n 是奇数,可以如下图这么划分:
?...因为翻转每次只需要交换两个格子的位置,所以不需要任何额外变量。
再提一个交换两个元素的小 trick ,如代码里注释的那样,可以采用异或操作来规避额外变量。...int n = matrix.size(); for (int i = 0; i None: n = len(matrix) for i in range(n//2): for j in range((n+