基本思路
顺时针旋转矩阵后,第一行变成最后一列,最后一行变成第一列,可以创建一个新的数组,然后遍历原数组中的每行放到新数组的对应列中,最后返回新的数组,这样空间复杂度是O(n^2)。
或者观察顺时针旋转矩阵的规律,发现顺时针旋转矩阵就是矩阵转置后再将每行逆序得到的,而矩阵转置就是对角线元素互换,因此可以先将原矩阵的对角线元素互换,然后再将每行逆序,就得到了顺时针旋转矩阵。
参考
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param mat int整型二维数组
* @param n int整型
* @return int整型二维数组
*/
public int[][] rotateMatrix (int[][] mat, int n) {
// write code here
int temp;
for (int i = 1; i < mat.length; ++i) { // 对角线元素互换
for (int j = 0; j < i; ++j) {
temp = mat[i][j];
mat[i][j] = mat[j][i];
mat[j][i] = temp;
}
}
int left, right;
for (int i = 0; i < mat.length; ++i) { // 每一行数组逆序
left = 0;
right = mat[i].length - 1;
while (left < right) {
temp = mat[i][left];
mat[i][left] = mat[i][right];
mat[i][right] = temp;
left++;
right--;
}
}
return mat;
}
}



京公网安备 11010502036488号