旋转图像

匿名 (未验证) 提交于 2019-12-03 00:20:01

给定一个 × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

说明:

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

示例 1:

给定 matrix =  [   [1,2,3],   [4,5,6],   [7,8,9] ],  原地旋转输入矩阵,使其变为: [   [7,4,1],   [8,5,2],   [9,6,3] ]

解题思路:

刚开始没有想到,后来看过提示才恍然大悟,感觉这一类题目还是要注意观察图像的特征,把操作进行逐步分解,这样就把原地旋转分解为上下行互换、和对角线互换两个步骤,接下来就很容易了。

	public static void rotate(int[][] matrix) { //		System.out.println(matrix.length); 		int a = 0; 		//第一步,上下互换 		for(int i=0;i<matrix.length/2;i++){ 			for(int j=0;j<matrix.length;j++){ 				//第一行和最后一行互换,第二行和倒数第二行互换,以此类推 				a = matrix[i][j]; 				matrix[i][j] = matrix[matrix.length-(i+1)][j]; 				matrix[matrix.length-(i+1)][j] = a; 			} 		} 		//第二步,对角线互换 		for(int i=0;i<matrix.length;i++){ 			for(int j=i;j<matrix.length;j++){//每次进行到下一行的时候,要把已经换过的部分忽略掉! 				if(i!=j){ 				//对角线上的元素互换,a12=a21,a13=a31,以此类推 				a = matrix[i][j]; 				matrix[i][j] = matrix[j][i]; 				matrix[j][i] = a; 				} 			} 		} 		//查看结果 		for(int i=0;i<matrix.length;i++){ 			for(int j=0;j<matrix.length;j++){ 				System.out.printf(matrix[i][j]+","); 			} 			System.out.println("\n"); 		} 	}
转载请标明出处:旋转图像
文章来源: 旋转图像
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!