完整代码如下:
java
class Solution {
public void rotate(int[][] matrix) {
//思路:先转置在进行行翻转
//1 转置矩阵
for(int i = 0;i<matrix.length;i++){
for(int j = i;j<matrix[i].length;j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
//2 行翻转
for(int i = 0;i<matrix.length;i++){
int left = 0;
int right = matrix.length - 1;
while(left < right){
int temp = matrix[i][left];
matrix[i][left] = matrix[i][right];
matrix[i][right] = temp;
left++;
right--;
}
}
}
}
本题实现思路:先转置矩阵,在进行行翻转
转置矩阵:将原来矩阵的行变为矩阵的列,顺序不发生改变,[1,2,3] [1,4,7]
4,5,6\] -----\> \[2,5,8
7,8,9\] \[3,6,9
行翻转:将矩阵每一行的最左最右的两个数的位置进行交换,直到左右两个数的位置重叠结束
1,4,7\] \[7,4,1
2,5,8\] -----\> \[8,5,2
3,6,9\] \[9,6,3\] 这样就达到了顺时针旋转90度矩阵的结果了 代码实现思路: 转置矩阵:通过交换i,j对应位置的元素,获得转置矩阵效果 行翻转:将每行的最左,最右两个元素交换位置,通过两个变量,left right来记录左右两个位置的值,每次交换之后,left++ ,right-- 直到right = left停止