LeetCode 48 Rotate Image(2D图像旋转问题)

 
Problem:给定一个n*n的二维图片,将这个二维图片按照顺时针旋转90°
 
求解过程:
 
 
求解过程如下所示:
 
 
首先对矩阵进行按照对角线进行交换操作
 
之后将矩阵前n/2列与后n/2列进行两两交换操作 (0<—>n-1     1<—>n-2    2<—>n-3) 
 
参考代码:
package leetcode_50;


/***
 * 
 * @author pengfei_zheng
 * 实现二维图片顺时针旋转90度
 */
public class Solution48 {
    public static void rotate(int[][] matrix) {
        int len = matrix.length;
        for(int i = 0; i < len; i++){
            for(int j = i+1; j < len; j++){
                swap(matrix,i,j,j,i);
            }
        }
        for(int i = 0 ; i < len ; i++){
            for(int j = 0 ; j < len / 2; j++){
                swap(matrix,i,j,i,len-1-j);
            }
        }
    }
    
    private static void swap(int[][] matrix, int i1,int j1, int i2,int j2) {
        int temp = matrix[i1][j1];
        matrix[i1][j1]=matrix[i2][j2];
        matrix[i2][j2]=temp;
    }

    public static void main(String[]args){
        int [][]matrix={{1,2,3},{4,5,6},{7,8,9}};
        rotate(matrix);
        int len = matrix.length;
        for(int i = 0 ; i < len; i++){
            for(int j = 0 ; j < len; j++){
                System.out.print(matrix[i][j]);
            }
            System.out.println();
        }
    }
}
 
原文地址:https://www.cnblogs.com/zpfbuaa/p/6542173.html