题意理解
旋转图像
问题分析
先转置,再水平翻转,第一次沿对角线遍历一半的元素,第二次沿中心线遍历另一半的元素。
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
//transpose
for (int i = 0; i != n; i ++)
{
for (int j = 0; j != i; j ++)
{
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
/*
for(int i = 0; i != n; i ++)
{
for(int j = 0; j != n; j ++)
{
cout << matrix[i][j] << '\t';
}
cout << endl;
}
*/
//flip horizontal
for(int i = 0; i != n; i ++)
{
for(int j = 0; j != n / 2; j ++)
{
int tmp = matrix[i][j];
matrix[i][j] = matrix[i][n - 1 - j];
matrix[i][n - 1 - j] = tmp;
}
}
}
其他
链接