将一个n×n的二维矩阵表示图像。
90度(顺时针)旋转图像?
在原矩阵中操作又是如何?
public class MyAlg {
/*
[23, 10, 1]
[30, 11, 4]
[34, 16, 8]
*/
public static void main(String[] args) {
int[][] matrix = {
{ 1, 4, 8},
{10, 11, 16},
{23, 30, 34}
};
Solution.rotate1(matrix);
if(matrix != null){
for(int i = 0; i < matrix.length; i++){
System.out.println(Arrays.toString(matrix[i]));
}
}
}
public static int[][] rotate(int[][] matrix) {
if(matrix == null || matrix.length==0)
return null;
int m = matrix.length;
int[][] result = new int[m][m];
for(int i=0; i<m; i++){
for(int j=0; j<m; j++){
result[j][m-1-i] = matrix[i][j];
}
}
return result;
}
/*原矩阵操作*/
public static void rotate1(int[][] matrix) {
int m = matrix.length;
for (int i = 0; i < m / 2; i++) {
for (int j = 0; j < Math.ceil(((double) m) / 2); j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[m-1-j][i];
matrix[m-1-j][i] = matrix[m-1-i][m-1-j];
matrix[m-1-i][m-1-j] = matrix[j][m-1-i];
matrix[j][m-1-i] = temp;
}
}
}
}