您的位置:首页 > 其它

【leetcode】第48题:矩阵转置90度

2016-02-28 20:54 253 查看
1.我自己想到的解法思想如下:

(i,j)-->(j,n-1-i)

代码如下:

Java:

public static void rotate(int[][] matri){
		int n = matri.length;
		int[][] matri1 = new int

;
		for(int i = 0;i<n;i++)
			for(int j = 0;j<n;j++)
				matri1[i][j] = matri[i][j];
		for(int i = 0;i<n;i++){
			for(int j = 0;j<n;j++)
				matri[j][n-1-i] = matri1[i][j];
	}


C语言:

void reverseMatri(int v[],int m, int n,int output[]){
	for(int i = 0;i<m;i++){
		for(int j = 0;j<n;j++){
			output[j*n+n-1-i] = v[i*n+j];
		}
	}
}


2.大神们的解法

思想如下:

1.先交换i,j

图示:

1 4 7

2 5 8

3 6 9

然后再讲第一列和最后一列交换:

7 4 1

8 5 2

9 6 3

java:

public void rotate(int[][] matrix) {
       /* 
        int n = matri.length;
        //先转置矩阵到此为位置
		for(int i = 0;i<n;i++)
		    for(int j = 0;j<n;j++){
		        int temp ;
		        temp = matri[i][j];
		        matri[i][j] = matri[j][i];
		        matri[i][j] = temp;
		    }
		for(int i = 0;i<n;i++){
		    
		        temp = matri[i][n-1];
		        matri[i][0] = matri[i][n-1];
		        matri[i][n-1] = temp;
		}
		
		*/
		
		for(int i = 0; i<matrix.length; i++){
            for(int j = i; j<matrix[0].length; j++){
                int temp = 0;
                temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        for(int i =0 ; i<matrix.length; i++){
            for(int j = 0; j<matrix.length/2; j++){
                int temp = 0;
                temp = matrix[i][j];
                matrix[i][j] = matrix[i][matrix.length-1-j];
                matrix[i][matrix.length-1-j] = temp;
            }
        }


大家如果也有更好的解法也可以交流下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: