类别:数组 二维数组变换
题目:
法一:
想法:借助temp,原地旋转,注意开始终止条件,以及下标变化
代码:
class Solution {
public void rotate(int[][] matrix) {
int n=matrix[0].length;
int top,down,i,j,tempA,tempB,a,b;
top=0;
down=n-1;
while(top<down){
a=top;
b=top;
while(b<down){
i=a;
j=b;
// 1 -> 2
tempA=matrix[j][down];
matrix[j][down]=matrix[i][j];
i=j;
j=down;
// 2 -> 3
tempB=matrix[down][down-i+top];
matrix[down][down-i+top]=tempA;
j=down-i+top;
i=down;
// 3 -> 4
tempA=matrix[j][top];
matrix[j][top]=tempB;
i=j;
j=top;
// 4 -> 1
tempB=matrix[top][down-i+top];
matrix[top][down-i+top]=tempA;
j=down-i+top;
i=top;
b++;
}
top++;
down--;
}
}
}
结果: