题意:
将一个正方形矩阵顺时针旋转90度。
思路:
2种方式——
1.正常想法 —— 先对角线对称,再左右对称。 代码9ms。
2.迷之规律 —— 在正方形里面画一个叉,分成的4个三角形相互替换。 代码6ms。
代码:
/**
* 迷之规律 —— 在正方形里面画一个叉,分成的4个三角形相互替换。 6ms
*/
class Solution {
public:
void rotate(vector<vector<int>> &matrix) {
int n = matrix.size();
for (int i = 0; i < n / 2; ++i) {
for (int j = i; j < n - i - 1; ++j) {
swap(matrix[i][j], matrix[j][n - i - 1]);
swap(matrix[i][j], matrix[n - i - 1][n - j - 1]);
swap(matrix[i][j], matrix[n - j - 1][i]);
}
}
}
};
/**
* 正常想法 —— 先对角线对称,再左右对称。 9ms
*/
class Solution {
public:
void rotate(vector<vector<int>> &matrix) {
int n = matrix.size();
for (int i = 0; i < n; ++i) {
for (int j = i + 1; 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 - j - 1]);
}
}
}
};