e1b58fb755b84a7da3790998f7557451.png

【题目】:48. 旋转图像

class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
for(int i = 0; i < n / 2; ++i) {
for(int j = 0; j < (n + 1) / 2; ++j) { // 奇数的话,要向下取整
int temp = matrix[i][j];
matrix[i][j] = matrix[n - j - 1][i];
matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];
matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];
matrix[j][n - i - 1] = temp;
}
}
}
};
  • 时间复杂度: O(n^2)
  • 空间复杂度: O(1)

这题如果直接以行为单位进行旋转,有一部分值会被覆盖。所以我们应该一次旋转一个数字,找到这些数字的关系。
f0f2303277e3402d9dbf4ea6d854af67.png