🌕 🌗 48. 旋转图像

吞佛童子2022年10月10日
  • algorithm
  • array
  • 找规律
小于 1 分钟

🌕 🌗 48. 旋转图像

难度:🌕 🌗

问题描述

img_5.png


解法

class Solution {
    public void rotate(int[][] matrix) {
        // 思路:
        // 公式 [i][j] = [len - 1 - j][i]
        // 每 4 个对角线的元素为一组,进行移动
        // 只需要遍历每行
        int len = matrix.length;
        for(int i = 0; i < len / 2; i ++) {
            for(int j = i; j < len - 1 - i; j ++) {
                int tmp = matrix[i][j];
                int x = i;
                int y = j;
                for(int k = 0; k < 4; k ++) {
                    // System.out.println("1: " +  x + "  " + y  + "  " + matrix[x][y]);
                    if(k < 3) {
                        int newX = len - 1 - y;
                        int newY = x;
                        matrix[x][y] = matrix[newX][newY];
                        // System.out.println(matrix[newX][newY]);
                        x = newX;
                        y = newY;
                    } else {
                        matrix[x][y] = tmp;
                    }
                    // System.out.println("2: " + x + "  " + y);
                }
            }
        }
    }
}

输出

img_4.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou