旋转正方形矩阵 【题目】 给定一个整型正方形矩阵matrix,请把该矩阵调整成 顺时针旋转90度的样子。

只需要保证边界上的位置变化不会乱,那么里面的元素位置也不会乱

需要打印一个点,如何找到其他的三个点,进行位置的变化,具体如何找到其他的三个点,就看你的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;

        //  因为是选择  所以可定是正方形  既然是正方形 的话   那么就只需要判断  tR < dR
        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();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38200548/article/details/81281227
今日推荐