class Solution {
/*
要想实现矩阵原地转置,则可以先将改矩阵原地对称化,后再将此对称化后的矩阵的每行元素首尾相对交换
*/
private void matrixZZ(int[][]matrix,int n){
int temp = 0;
for(int i =0;i<n;i++){
//注意列的起始下标是i而不是0可以手动模拟一下(第i行元素与对应的第j列元素想对称(行变列,列变行))
for(int j=i;j<n;j++){
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
private void swapRow(int[][]matrix,int n){
int temp = 0;
for(int i =0;i<n;i++){
//这里记住是首尾相对交换,所以j<n/2而不是j<n(拿一半与另一半进行交换)
for(int j = 0;j<n/2;j++){
temp = matrix[i][j];
matrix[i][j] = matrix[i][n-j-1];
matrix[i][n-j-1] = temp;
}
}
}
public void rotate(int[][] matrix) {
int n = matrix.length;
matrixZZ(matrix,n);
swapRow(matrix,n);
}
}
01-01
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交