将一个矩阵顺时针旋转90度,要求不适用额外的空间
我的做法需要辅助的空间
public class Solution {
public void rotate(int[][] matrix) {
int row = matrix.length;
int col = matrix[0].length;
int[][] t = new int[col][row];
for(int i = 0; i < row; ++i){
for(int j = 0; j < col; ++j){
t[j][row - i - 1] = matrix[i][j];
}
}
for(int i = 0; i < row; ++i){
for(int j= 0; j < col; ++j)
matrix[i][j] = t[i][j];
}
// return t;
}
}
leetcode给出了不需要额外辅助空间的C++做法,实在是威武
public void rotate(int[][] matrix) {
int n = matrix.length;
for(int y=0;y<n/2;y++){
for(int x=y;x < n-y-1;x++){
int temp=matrix[y][x];
temp=move(matrix,temp,(n-1)-y,x);
temp=move(matrix,temp,(n-1)-x,(n-1)-y);
temp=move(matrix,temp,y,(n-1)-x);
temp=move(matrix,temp,x,y);
}
}
}
public int move(int[][]matrix,int val, int x, int y){
int store = matrix[y][x];
matrix[y][x]=val;
return store;
}