package com.thinker.test.test1;

public class Test_1_6{


	/**
	 *
	 * 题目：有一副由NxN矩阵表示的图像，这里每个像素用一个int表示，请编写一个算法，在不占用额外内存
	 * 空间的情况下(即不使用缓存矩阵)，将图像顺时针旋转90度。
	 * 给定一个NxN的矩阵，和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500，图像元素小于等于256
	 *
	 **/
	public static int[][] rotate(int[][] mat,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 = mat[layer][i];
				mat[layer][i] = mat[last - offset][layer];
				mat[last - offset][layer] = mat[last][last - offset];
				mat[last][last - offset] = mat[i][last];
				mat[i][last] = top;
			}
		}
		return mat;
	}

	public static void main(String[] args){
		int[][] arr = {
			{1,2,3},
			{4,5,6},
				{7,8,9}
		
		};
		int n = 3;
		arr = rotate(arr,3);
		for(int i=0;i<n;i++){
			for(int j = 0;j < n;j++){
				System.out.print(arr[i][j]+"\t");
			}
			System.out.println();
		}
	}

}
