我的思路:
1、顺时针将n * n的矩阵在旋转90度,空间复杂度O(1)。
2、双重循环,单个循环内将每条边的数据赋值,使用一个临时变量保存最后一个要赋值的数据值。
3、写好每个控制变量,6ms过,讨论区还有一些其他方法,都差不多。考虑好矩阵旋转的特性。
代码如下:
void rotate(vector<vector<int> > &matrix) {
int temp;
int m = matrix[0].size();
int n = m;
for (int i = 0; i < n / 2; i++) {
for (int j = i; j < m - 1 - i; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[n - 1 - j][i];
matrix[n - 1 - j][i] = matrix[n - 1 - i][m - 1 -j];
matrix[n - 1 - i][m - 1 - j] = matrix[j][m - 1 - i];
matrix[j][m - 1 - i] = temp;
}
}
}
别人思路:
1、将数组数据按照对角线交换之后reverse数组,就能得到旋转的数据。