48. 旋转图像
1.想法
解:最终将所有矩阵的元素旋转90度
问题:需要旋转90度
方法:先根据对角线旋转,然后根据竖直中线旋转
2.思维过程
1.根据对角线旋转就是转置矩阵根据对角线旋转满足旋转
2.根据中线旋转就是将
3.伪代码
1.step one 转置矩阵
for i=0 ->n-1
for j=i ->n-1
swap(Xiyj , Xjyi)
2.step two 中线对折
for i=0->n-1
for j=0->n/2-1
swap(xiyj,xiy(n-1-j))
3.代码
public void rotate(int[][] matrix) {
//转置矩阵
for(int i=0;i<matrix.length;i++){
for(int j=i;j<matrix.length;j++){
swap(matrix,i,j,j,i);
}
}
//对折矩阵
for(int i=0;i<matrix.length;i++){
for (int j=0;j<matrix.length/2;j++){
swap(matrix,i,j,i,matrix.length-1-j);
}
}
}
private void swap(int[][] matrix, int i1, int j1, int i2, int j2) {
int temp = matrix[i1][j1];
matrix[i1][j1]=matrix[i2][j2];
matrix[i2][j2]=temp;
}
网友评论