从最外圈开始打印,对于每一个圈,每次交换四个元素的位置
class Solution {
public void rotate(int[][] matrix) {
if(matrix.length==0||matrix[0].length==0){
return;
}
int startRow=0;
int startCol=0;
int endRow=matrix.length-1;
int endCol=matrix[0].length-1;
while(startRow<endRow){
xuanzhuan(matrix,startRow++,startCol++,endRow--,endCol--);
}
}
public void xuanzhuan(int[][] matrix,int startRow,int startCol,int endRow,int endCol){
if(startRow==endRow){
return ;
}
//这个地方注意:i<endCol-startCol,一定不要错,因为i从0开始的啊,索引是0
for(int i=0;i<endCol-startCol;i++){
int temp=matrix[startRow][startCol+i];
matrix[startRow][startCol+i]=matrix[endRow-i][startCol];
matrix[endRow-i][startCol]=matrix[endRow][endCol-i];
matrix[endRow][endCol-i]=matrix[startRow+i][endCol];
matrix[startRow+i][endCol]=temp;
}
}
}