① 转换成赋值语句(00等为下标伪代码):这里可以将5拿出,以5的位置开始依次进行移位00=30 ; 30=33 ; 33=03 ; 03=拿出来的5。
② 拿出1,以1的位置开始依次进行移位01=20 20=32 32=13 13=拿出来的1。
③ 然后重复上述过程,直到旋转完最外圈的元素。
④ 再从外圈向内内圈依次进行上述旋转过程,直到每个元素的位置都旋转完成为止。 注意:外层到内层每层开始旋转的位置:[0,0][1,1][2,2]…(内层的旋转图像是从4开始)
3、复杂度分析:
① 时间复杂度:O(N2)其中 N 是 matrix 的边长。我们需要对矩阵每一个位置进行移动
② 空间复杂度:O(1)。为原地旋转。
思路二(翻转):
1、先将矩阵进行水平翻转(上下的翻转),再根据主对角线翻转。 注:这里你可以用你的手机模仿一下 水平翻转和 根据主对角线翻转的过程。
(扩展一下旋转180°,那我们可以上下翻转再左右翻转。)
2、复杂度分析
① 时间复杂度:O(N2),其中 N 是 matrix 的边长。对于每一次翻转操作,我们都需要枚举矩阵中一半的元素。
② 空间复杂度:O(1)。为原地翻转得到的原地旋转。
代码实现(思路一(原地旋转)):