解题思路
阅读题目后可发现要完成这个选择,可以先将矩阵进行转置后在交换列,其中交换操作可以使用矩阵乘法来完成但是这样时间负载率就为O(n^3)不划算,还是使用循环操作来完成更划算
代码如下:
class Solution {
public void rotate(int[][] matrix) {
int n=matrix.length;
int tmp=0;
//转置
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
tmp=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=tmp;
}
}
//交换列操作使用下标操作而不是矩阵乘法要交换得列元素下标和为n-1
for(int i=0;i<n;i++){
for(int j=0;j<n/2;j++){
tmp=matrix[i][j];
matrix[i][j]=matrix[i][n-1-j];
matrix[i][n-1-j]=tmp;
}
}
}
}