只需要保证边界上的位置变化不会乱,那么里面的元素位置也不会乱
需要打印一个点,如何找到其他的三个点,进行位置的变化,具体如何找到其他的三个点,就看你的coding能力了
package basic_class_03;
/**
* 旋转举证
*
* @author lenovo
*/
public class Code_05_RotateMatrix_1 {
public static void rerote(int[][] martix) {
int tR = 0;
int tC = 0;
int dR = martix.length - 1;
int dC = martix[0].length - 1;
while(tR < dR) {
reroteEdge(martix, tR++, tC++, dR--, dC--);
}
}
public static void reroteEdge(int[][] martix, int tR, int tC, int dR, int dC) {
int times = dC - tC;
int tmp = 0;
/**
* 边界得自己去扣 多扣 就能有比较清晰的过程
* 每一次都是四点进行交换
*/
for(int i = 0; i != times; i++) {
tmp = martix[tR][tC + i];
martix[tR][tC + i] = martix[tR - i][tC];
martix[dR - i][tC] = martix[dR][dC - i];
martix[dR][dC - i] = martix[tR + i][dC];
martix[tR + i][dC] = tmp;
}
}
public static void printMartix(int[][] martix) {
for(int i = 0; i != martix.length; i++) {
for(int j = 0; j != martix[0].length; j++) {
System.out.print(martix[i][j] + " ");
}
System.out.println();
}
}
}
|