题目:
将一个矩阵就地顺时针翻转90度。
解答:
两次翻转 先对角线交换 再每一行前后交换。
例如:
1 2 3
4 5 6
7 8 9
对角线交换得到:
1 4 7
2 5 8
3 6 9
每一行前后交换得:
7 4 1
8 5 2
9 6 3
得出结果。
代码:
class Solution {
public:
void rotate(vector<vector<int> > &matrix) {
int n = matrix.size();
for (int i = 0; i < n - 1; i++)
{
for (int j = i; j < n; j++)
{
swap(matrix[i][j], matrix[j][i]);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n / 2; j++)
{
swap(matrix[i][j], matrix[i][n - 1 - j]);
}
}
}
};