rotate-image

来源:互联网 发布:贪心算法 多机调度 编辑:程序博客网 时间:2024/05/16 13:56
packagecom.ytx.array;
/** 题目:rotate-image
 *
 *  描述:     You are given an n x n 2D matrix representing an image.
                    Rotate the image by 90 degrees (clockwise).
                    Follow up:
                    Could you do this in-place?
 *
 *@authoryuantian xin
 *
 *  求将一个n*n的二维矩阵顺时针旋转90度得到的新矩阵
 * 
 *  我是直接找规律,以3*3矩阵为例
 *  matrix[0][0] = matrix[2][0], matrix[0][1] = matrix[1][0], matrix[0][2] = matrix[0][0];
 * 
 *  matrix[1][0] = matrix[2][1], matrix[1][1] = matrix[1][1], matrix[1][2] = matrix[0][1];
 * 
 *  matrix[2][0] = matrix[2][2], matrix[2][1] = matrix[1][2], matrix[2][2] = matrix[0][2];
 * 
 *  得到规律 matrix[i][j] = matrix[len- 1 - j][i]
 *
 */
publicclass Rotate_image {
       
       publicvoid rotate(int[][]matrix) {
       int len = matrix.length;
       int[][]temp = newint[len][len];
       for(inti = 0; i < len;i++) {
             for(intj = 0; j < len;j++) {
                    temp[i][j] = matrix[i][j];
             }
        }
       
       for(inti = 0; i < len;i++) {
             for(intj = 0; j < len;j++) {
                    matrix[i][j] = temp[len- 1 - j][i];
             }
        }
    }
       publicstatic void main(String[]args) {
             int[][]matrix= {{2,3,3},{1,1,1},{3,3,3}};
             newRotate_image().rotate(matrix);
             
             for(inti = 0; i < matrix.length;i++) {
                    for(intj = 0; j < matrix.length;j++) {
                           System.out.print(matrix[i][j] + " ");
                    }
                    System.out.println();
             }
             
       }
}