题目
原文:
Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place?
译文:
给出一个表示NXN矩阵的图片,图片中的每个像素是4个字节,写一个方法把图片旋转90°,能否在原地进行操作?
解答
若将图片顺时针旋转90°,假如原图如下:
| 1 | 2 | 3 | 4 | 
| 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 
| 13 | 14 | 15 | 16 | 
| 13 | 9 | 5 | 1 | 
| 14 | 10 | 6 | 2 | 
| 15 | 11 | 7 | 3 | 
| 16 | 12 | 8 | 4 | 
 转换后:
代码如下:
class Q1_6{
	public static void rotate(int[][] matrix,int n){
		for(int layer=0;layer<n/2;++layer){
			int first=layer;
			int last=n-1-layer;
			for(int i=first;i<last;++i){
				int offset=i-first;
				int top=matrix[first][i];  //save top
				//left->top
				matrix[first][i]=matrix[last-offset][first];
				
				//bottom->left
				matrix[last-offset][first]=matrix[last][last-offset];
				
				//right->bottom
				matrix[last][last-offset]=matrix[i][last];
				
				//top->right
				matrix[i][last]=top;  //right<-saved top
			}
		}
	}
	public static void main(String[] args){
		int a[][]={
			{1,2,3,4},
			{5,6,7,8},
			{9,10,11,12},
			{13,14,15,16}
		};
		rotate(a,4);
		for(int i=0;i<4;i++){
			int j;
			for(j=0;j<3;j++)
				System.out.printf(a[i][j]+",");
			System.out.println(a[i][j]);
		}
	}
}此题若有其他更好的方法,还望指教!
---EOF---
 矩阵旋转算法
矩阵旋转算法
         
                   
                   
                   
                   
                             本文提供了一个在原地将NxN矩阵(表示为图片)顺时针旋转90度的方法。通过详细的步骤说明和Java代码实现,展示了如何通过层叠方式逐层进行元素交换,最终完成整个矩阵的旋转。
本文提供了一个在原地将NxN矩阵(表示为图片)顺时针旋转90度的方法。通过详细的步骤说明和Java代码实现,展示了如何通过层叠方式逐层进行元素交换,最终完成整个矩阵的旋转。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   2788
					2788
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            