三、code
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n=matrix.size();
//水平翻转
for (int i=0;i<n/2;i++)//控制翻转的行数。对于一个 n × n 的矩阵来说,我们只需要翻转前 n / 2 行,即上半部分的行。
{
for (int j=0;j<n;j++)// 控制翻转的列数。它遍历了矩阵中的每一列。
{
std::swap(matrix[i][j],matrix[n-1-i][j]);//std::swap 函数来交换矩阵中的两个元素。具体地,matrix[i][j] 表示当前位置的元素,matrix[n - 1 - i][j] 表示与当前位置对称的位置的元素。
}
}
//主对角线翻转
for (int i=0;i<n;i++)//控制翻转的行数。它遍历了矩阵的每一行。
{
for (int j=0;j<i;j++)//控制翻转的列数。它遍历了矩阵中每一行的前 i 列,即对角线上方的元素。
{
std::swap(matrix[i][j],matrix[j][i]);
}
}
}
};