问题
1.6 问题:将一个N*N矩阵顺时针旋转90度(其他形如顺时针180度,或者逆时针90度都一样的思路),不占用额外空间
实现
按照规律一层一层逐个进行旋转
/**
* 1.6 问题:将一个N*N矩阵顺时针旋转90度(其他形如顺时针180度,或者逆时针90度都一样的思路),不占用额外空间
* 思路:一层一层逐个进行旋转
* time:o(n^2)
* space:o(1)
*/
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];
// 左到上
matrix[first][i] = matrix[last-offset][first];
// 下到左
matrix[last-offset][first] = matrix[last][last-offset];
// 右到下
matrix[last][last-offset] = matrix[i][last];
// 上到右
matrix[i][last] = top;
}
}
}
版权声明:本文为Kaiyang_Shao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。