public void rotate1(int[][] matrix) {//找出对应关系(i,j) -> (j,n-1-i)
int n = matrix.length;
int [][]tmp = new int[n][n];
for(int i = 0; i < n; ++ i){
for(int j =0; j < n; ++ j){
tmp[j][n-i-1] = matrix[i][j];
}
}
for(int i = 0; i < n; ++ i){
for(int j =0; j < n; ++ j){
matrix[i][j] = tmp[i][j];
}
}
} public void rotate(int[][] matrix) {//inplace (i,j)->(j,i) reverse(每一行)
int n = matrix.length;
int temp;
for(int i = 0; i < n; ++ i){
for(int j =i; j < n; ++ j){
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
int l,r;
for(int i = 0;i < n; ++i){
l = 0;
r = n-1;
while (l < r){
temp = matrix[i][l];
matrix[i][l] = matrix[i][r];
matrix[i][r] = temp;
l ++;
r --;
}
}
}原文:http://blog.csdn.net/youmengjiuzhuiba/article/details/44901461