题目大意:将给出的二维数组顺时针旋转90°,要求不申请新的空间
分析:数组考察。观察旋转90°所需要的操作,得知需要两步:沿主对角线交换对称元素—>按列交换对称元素。
代码:转载自https://blog.csdn.net/fly_yr/article/details/48139675
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
if (matrix.empty())
return;
int n = matrix.size();
for (int i = 0; i < n; i++) { //首先,沿主对角线交换元素
for (int j = 0; j < i; j++)
swap(matrix[i][j], matrix[j][i]);
}
for (int i = 0, j = n - 1; i < j; i++, j--) { //按列交换对称元素
for (int k = 0; k < n; k++)
swap(matrix[k][i], matrix[k][j]);
}
}
};