题目描述(中等难度)

将一个矩阵顺时针旋转 90 度,并且不使用额外的空间。大概属于找规律的题,没有什么一般的思路,观察就可以了。

解法一

可以先转置,然后把每列对称交换交换一下。

时间复杂度:O(n²)。

也可以先以横向的中轴线为轴,对称的行进行交换,然后再以对角线交换。

解法二

我把这个链接的思路贴过来,里边评论有张图也都顺道贴过来吧,写的很好。

48. Rotate Image - 图1

一圈一圈的循环交换,很妙!

  1. for (int i=0; i<n/2; i++)
  2. int tmp=matrix[i][j];
  3. matrix[i][j]=matrix[n-j-1][i];
  4. matrix[n-i-1][n-j-1]=matrix[j][n-i-1];
  5. matrix[j][n-i-1]=tmp;
  6. }

空间复杂度:O(1)。

这道题就是对题目的特征进行观察就可以了。

添加好友一起进步~

如果想系统的学习数据结构和算法,强烈推荐一个我之前学过的课程,可以点击 查看详情